<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2titles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemtitles.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>Code Beside</title>
        <link>http://blog.codebeside.org/Default.aspx</link>
        <description>a blog on everything in general and nothing in particular (but mostly .NET and related technologies)</description>
        <language>en-US</language>
        <copyright>Gustavo Guerra</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <image>
            <title>Code Beside</title>
            <url>http://blog.codebeside.org/images/RSS2Image.gif</url>
            <link>http://blog.codebeside.org/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <geo:lat>38.42</geo:lat><geo:long>9.13</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CodeBeside" type="application/rss+xml" /><feedburner:emailServiceId>CodeBeside</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FCodeBeside" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCodeBeside" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FCodeBeside" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/CodeBeside" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FCodeBeside" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FCodeBeside" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FCodeBeside" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FCodeBeside" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>Twitter</title>
            <category>Misc</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/2sqfP3CEmxM/21.aspx</link>
            <description>&lt;p&gt;I decided to give twitter a try. You can follow me on &lt;a href="http://twitter.com/ovatsus"&gt;http://twitter.com/ovatsus&lt;/a&gt;.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cbea4393-4a88-4438-92e9-06859cd3fc61" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Misc" rel="tag"&gt;Misc&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/21.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=2sqfP3CEmxM:uybdrQJSqHQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=2sqfP3CEmxM:uybdrQJSqHQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=2sqfP3CEmxM:uybdrQJSqHQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=2sqfP3CEmxM:uybdrQJSqHQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=2sqfP3CEmxM:uybdrQJSqHQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=2sqfP3CEmxM:uybdrQJSqHQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/2sqfP3CEmxM" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2009/05/16/21.aspx</guid>
            <pubDate>Sat, 16 May 2009 12:32:17 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/21.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2009/05/16/21.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/21.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2009/05/16/21.aspx</feedburner:origLink></item>
        <item>
            <title>Microsoft Dreamway - Slides &amp;amp; Demo Code</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/rYic4YQG6dA/microsoft-dreamway-slides-amp-demo.aspx</link>
            <description>&lt;p&gt;You can get the PowerPoint slides and the demo code from &lt;a href="http://www.codebeside.org/Dreamway.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:68eac5d4-47a5-4ec7-b9f5-6c1c3b98c3ca" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WPF"&gt;WPF&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/20.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=rYic4YQG6dA:qDfWBE2j2fc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=rYic4YQG6dA:qDfWBE2j2fc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=rYic4YQG6dA:qDfWBE2j2fc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=rYic4YQG6dA:qDfWBE2j2fc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=rYic4YQG6dA:qDfWBE2j2fc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=rYic4YQG6dA:qDfWBE2j2fc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/rYic4YQG6dA" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/10/18/microsoft-dreamway-slides-amp-demo.aspx</guid>
            <pubDate>Sat, 18 Oct 2008 14:06:02 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/20.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/10/18/microsoft-dreamway-slides-amp-demo.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/20.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/10/18/microsoft-dreamway-slides-amp-demo.aspx</feedburner:origLink></item>
        <item>
            <title>Microsoft Dreamway</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/D5Pg0G_767Y/microsoft-dreamway.aspx</link>
            <description>&lt;p&gt;Tomorrow I'll do a presentation about WPF in the &lt;a title="" href="http://www.microsoft.com/portugal/dreamway"&gt;&lt;/a&gt;&lt;a title="" href="http://www.microsoft.com/portugal/dreamway"&gt;Microsoft Dreamway&lt;/a&gt; event in Lisbon, at Centro Cultural de Belém.&lt;/p&gt;
&lt;p&gt;My session will be Dev09 at 17:30. Check out the &lt;a title="" href="http://www.microsoft.com/portugal/dreamway/agenda"&gt;agenda&lt;/a&gt;.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b19e8faf-9f56-4822-b505-662dc788c32c" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WPF"&gt;WPF&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/19.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=D5Pg0G_767Y:AqwPaW9WdA4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=D5Pg0G_767Y:AqwPaW9WdA4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=D5Pg0G_767Y:AqwPaW9WdA4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=D5Pg0G_767Y:AqwPaW9WdA4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=D5Pg0G_767Y:AqwPaW9WdA4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=D5Pg0G_767Y:AqwPaW9WdA4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/D5Pg0G_767Y" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/10/02/microsoft-dreamway.aspx</guid>
            <pubDate>Thu, 02 Oct 2008 15:23:52 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/19.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/10/02/microsoft-dreamway.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/19.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/10/02/microsoft-dreamway.aspx</feedburner:origLink></item>
        <item>
            <title>More Nice Photos from Smashing Magazine</title>
            <category>Photography</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/txN7G9XpmaI/more-nice-photos-from-smashing-magazine.aspx</link>
            <description>&lt;p&gt;&lt;a title="" href="http://www.smashingmagazine.com/2008/09/21/25-beautiful-macro-photography-shots-photos/"&gt;25 Beautiful Macro Photography Shots&lt;/a&gt;&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b370e910-35e9-46f9-b863-772b60b8ae94" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Photography"&gt;Photography&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/18.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=txN7G9XpmaI:di7MkM0WXHQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=txN7G9XpmaI:di7MkM0WXHQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=txN7G9XpmaI:di7MkM0WXHQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=txN7G9XpmaI:di7MkM0WXHQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=txN7G9XpmaI:di7MkM0WXHQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=txN7G9XpmaI:di7MkM0WXHQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/txN7G9XpmaI" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/09/22/more-nice-photos-from-smashing-magazine.aspx</guid>
            <pubDate>Mon, 22 Sep 2008 19:18:19 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/18.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/09/22/more-nice-photos-from-smashing-magazine.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/18.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/09/22/more-nice-photos-from-smashing-magazine.aspx</feedburner:origLink></item>
        <item>
            <title>Extension Properties</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/nZiA5JnfeZ8/extension-properties.aspx</link>
            <description>&lt;p&gt;After you start to use extension methods and see all their benefits, you start thinking about how nice it would be to also have extension properties. When Scott Guthrie first announced them in &lt;a title="" href="http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx"&gt;New "Orcas" Language Feature: Extension Methods&lt;/a&gt;, someone immediately asked about extension properties. It just seems the feature is incomplete without both.&lt;/p&gt;
&lt;p&gt;One particular area that would benefit greatly from extension properties would be WPF. Every time you define an attached property, you usually create a static getter and a static setter for it. If you could package that up in an extension property, attached properties would be much nicer to use. &lt;/p&gt;
&lt;p&gt;There have been some hints that the C# language team is considering extension properties for the future, so maybe we'll get them in C# 4.0. But if you don't want to wait until 2010, you can have extension properties right now if you use F#. Check out Matthew Podwysocki's &lt;a href="http://weblogs.asp.net/podwysocki/archive/2008/09/09/object-oriented-f-extension-everything.aspx"&gt;Object Oriented F# - Extension Everything&lt;/a&gt;.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:73a78ad1-ef2e-4346-aa62-57156da316e8" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WPF"&gt;WPF&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/FSharp"&gt;FSharp&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/17.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=nZiA5JnfeZ8:TooBw8E_09w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=nZiA5JnfeZ8:TooBw8E_09w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=nZiA5JnfeZ8:TooBw8E_09w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=nZiA5JnfeZ8:TooBw8E_09w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=nZiA5JnfeZ8:TooBw8E_09w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=nZiA5JnfeZ8:TooBw8E_09w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/nZiA5JnfeZ8" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/09/10/extension-properties.aspx</guid>
            <pubDate>Wed, 10 Sep 2008 11:05:05 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/17.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/09/10/extension-properties.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/17.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/09/10/extension-properties.aspx</feedburner:origLink></item>
        <item>
            <title>Really Nice Photos</title>
            <category>Photography</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/U0XrWdckk0A/really-nice-photos.aspx</link>
            <description>&lt;p&gt;Smashing Magazine has been lately posting some really wonderful photos in their site on their Monday Inspiration section:&lt;/p&gt;
&lt;p&gt;&lt;a title="" href="http://www.smashingmagazine.com/2008/03/10/35-fantastic-hdr-pictures/"&gt;35 Fantastic HDR Pictures&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="" href="http://www.smashingmagazine.com/2008/04/28/really-stunning-pictures-and-photos/"&gt;(Really) Stunning Pictures and Photos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="" href="http://www.smashingmagazine.com/2008/06/09/beautiful-black-and-white-photography/"&gt;Beautiful Black and White Photography&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="" href="http://www.smashingmagazine.com/2008/07/14/let-there-be-light-light-paintings-and-sculptures/"&gt;Let There Be Light: Light Paintings and Sculptures&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="" href="http://www.smashingmagazine.com/2008/08/24/45-beautiful-motion-blur-photos/"&gt;45 Beautiful Motion Blur Photos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="" href="http://www.smashingmagazine.com/2008/09/07/35-brilliant-examples-of-rain-photography/"&gt;35 Beautiful Examples of Rain Photography&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The also have some nice CSS &amp;amp; Photoshop tutorials really worth checking out.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:be4cdce2-c7dc-49ab-8210-1677af8c59dd" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Photography"&gt;Photography&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/16.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=U0XrWdckk0A:c9gro1nHKSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=U0XrWdckk0A:c9gro1nHKSQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=U0XrWdckk0A:c9gro1nHKSQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=U0XrWdckk0A:c9gro1nHKSQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=U0XrWdckk0A:c9gro1nHKSQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=U0XrWdckk0A:c9gro1nHKSQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/U0XrWdckk0A" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/09/08/really-nice-photos.aspx</guid>
            <pubDate>Mon, 08 Sep 2008 18:15:05 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/16.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/09/08/really-nice-photos.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/16.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/09/08/really-nice-photos.aspx</feedburner:origLink></item>
        <item>
            <title>Streaming XML input with XElementReader</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/jezsElSSfKI/streaming-xml-input-with-xelementreader.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;Updated on 2008/09/17&lt;/strong&gt;: Fixed problem when skipping elements.&lt;br /&gt;
&lt;strong&gt;Updated on 2008/09/15&lt;/strong&gt;: Fixed problem when trying to read missing attributes.&lt;/p&gt;
&lt;p&gt;One of new features introduced in .NET 3.5 that I welcomed the most was LINQ to XML. The old DOM API was a bit clumsy to use, and the simple fact that you don't need owner documents any more makes the new XElement much more flexible and pleasant to work with than the old XmlElement. &lt;/p&gt;
&lt;p&gt;Also new is an API for streaming XML output, XStreamingElement, that by using deferred execution gives you SAX-like performance on a DOM-like API. There's no streaming XML input API, though, so although you can now get away with not having to use XmlWriter any more, you'll still need to use XmlReader when you want good performance on large documents. During the LINQ to XML development, the XML Team considered such an API, but they decided not to do it for Orcas.&lt;/p&gt;
&lt;p&gt;Fortunately, Ralf Lämmel proposed such an API in &lt;a href="http://homepages.cwi.nl/~ralf/api-streaming-xml/"&gt;API-based XML streaming with FLWOR power and functional updates&lt;/a&gt;. I contacted him too ask if he could publicly release the code of his prototype, but he said he couldn't do it. Nevertheless, he kindly offered to help me develop a similar library myself, so with his help I implemented a small subset of the functionality he described in the paper. It took a while to get the corner cases right, but this is being used in a real-world scenario for some months now, so I think it's stable enough.&lt;/p&gt;
&lt;p&gt;The interface is the following:&lt;/p&gt;
&lt;div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BACKGROUND: #f4f4f4; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;XElementReader(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; path);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;XElementReader(&lt;span style="COLOR: #2b91af"&gt;TextReader&lt;/span&gt; reader);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;XElementReader(&lt;span style="COLOR: #2b91af"&gt;XmlReader&lt;/span&gt; reader);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;XElementReader(&lt;span style="COLOR: #2b91af"&gt;Stream&lt;/span&gt; stream);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; Name { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Value { &lt;span style="COLOR: blue"&gt;get&lt;/span&gt;; }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;XAttribute&lt;/span&gt; Attribute(&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; name);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;XAttribute&lt;/span&gt;&amp;gt; Attributes();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt; FirstElement();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt; Element(&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; name);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;&amp;gt; Elements();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;&amp;gt; Elements(&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; name);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #2b91af"&gt;XElement&lt;/span&gt; ToXElement();&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Although XElementReader looks a lot like a subset of XElement, you still have to remember that it's using a XmlReader underneath, so after you try to get to any child element, you have changed the reader position.&lt;/p&gt;
&lt;p&gt;For example, if you have an element like &amp;lt;Root&amp;gt;&amp;lt;A/&amp;gt;&amp;lt;B/&amp;gt;&amp;lt;A/&amp;gt;&amp;lt;B/&amp;gt;&amp;lt;/Root&amp;gt; and call .Element("A") twice and then .Element("B") twice, the second call for B will return null. If you instead call .Elements("A") and then .Elements("B"), you'll get two A elements, but no B elements at all. So to do this right, you have iterate on .Elements() and check the .Name property to see if you're in an A or in a B element.&lt;/p&gt;
&lt;p&gt;This read once nature sometimes also complicates debugging. To help with that, you can define XML_DEBUG_MODE to force XElementReader to use a XElement behind the covers instead of a XmlReader, so you can add watches freely without worrying about side effects. But remember to fully test with this conditional compilation symbol off.&lt;/p&gt;
&lt;p&gt;Here's the full code:&lt;/p&gt;
&lt;div style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BACKGROUND: #f4f4f4; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;#if&lt;/span&gt; XML_DEBUG_MODE&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;using System.Linq;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;#endif&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Xml;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;using&lt;/span&gt; System.Xml.Linq;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IDisposable&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; targetDepth;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;#if&lt;/span&gt; XML_DEBUG_MODE&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        private readonly XElement elem;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        private XElementReader(XElement elem, int depth) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            this.elem = elem;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            this.targetDepth = depth;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XElementReader(string path) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            this.elem = XElement.Load(path);&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XElementReader(TextReader reader) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            this.elem = XElement.Load(reader);&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XElementReader(XmlReader reader) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            this.elem = XElement.Load(reader);&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XElementReader(Stream stream) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            this.elem = XElement.Load(XmlReader.Create(stream));&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public void Close() {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            if (targetDepth != 0) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;                throw new InvalidOperationException("Only the outermost reader should be closed");&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XName Name {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            get { return elem.Name; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public string Value {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            get { return elem.Value; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XAttribute Attribute(XName name) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            return elem.Attribute(name);&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public IEnumerable&amp;lt;XAttribute&amp;gt; Attributes() {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            return elem.Attributes();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XElementReader FirstElement() {            &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            XElement subElem = elem.Elements().FirstOrDefault();            &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            return subElem == null ? null : new XElementReader(subElem, targetDepth + 1);        &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XElementReader Element(XName name) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            XElement subElem = elem.Element(name);&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            return subElem == null ? null : new XElementReader(subElem, targetDepth + 1);&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public IEnumerable&amp;lt;XElementReader&amp;gt; Elements() {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            return elem.Elements().Select(e =&amp;gt; new XElementReader(e, targetDepth + 1));&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public IEnumerable&amp;lt;XElementReader&amp;gt; Elements(XName name) {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            return elem.Elements(name).Select(e =&amp;gt; new XElementReader(e, targetDepth + 1));&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        public XElement ToXElement() {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;            return elem;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: gray"&gt;        }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;#else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;readonly&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XmlReader&lt;/span&gt; reader;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; onlyAttributesWereRead = &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; XElementReader(&lt;span style="COLOR: #2b91af"&gt;XmlReader&lt;/span&gt; reader, &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; depth) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.reader = reader;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.targetDepth = depth;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; XElementReader(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; path) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.reader = &lt;span style="COLOR: #2b91af"&gt;XmlReader&lt;/span&gt;.Create(path);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; XElementReader(&lt;span style="COLOR: #2b91af"&gt;TextReader&lt;/span&gt; reader) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.reader = &lt;span style="COLOR: #2b91af"&gt;XmlReader&lt;/span&gt;.Create(reader);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; XElementReader(&lt;span style="COLOR: #2b91af"&gt;XmlReader&lt;/span&gt; reader) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.reader = reader;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; XElementReader(&lt;span style="COLOR: #2b91af"&gt;Stream&lt;/span&gt; stream) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;this&lt;/span&gt;.reader = &lt;span style="COLOR: #2b91af"&gt;XmlReader&lt;/span&gt;.Create(stream);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; Close() {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (targetDepth != 0) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"Only the outermost reader should be closed"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        reader.Close();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; Name {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!onlyAttributesWereRead) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"This operation must be done before retrieving any element"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            GoToDepth(targetDepth);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt;.Get(reader.LocalName, reader.NamespaceURI);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; Value {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;get&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!onlyAttributesWereRead) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"This operation must be done before retrieving any element"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            onlyAttributesWereRead = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            GoToDepth(targetDepth);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; reader.ReadElementContentAsString();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XAttribute&lt;/span&gt; Attribute(&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; name) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!onlyAttributesWereRead) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"This operation must be done before retrieving any element"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        GoToDepth(targetDepth);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; attribute = reader.GetAttribute(name.LocalName, name.NamespaceName);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; attribute == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt; ? &lt;span style="COLOR: blue"&gt;null&lt;/span&gt; : &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XAttribute&lt;/span&gt;(name, attribute);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;XAttribute&lt;/span&gt;&amp;gt; Attributes() {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!onlyAttributesWereRead) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"This operation must be done before retrieving any element"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        GoToDepth(targetDepth);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;try&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;for&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; i = 0; i &amp;lt; reader.AttributeCount; ++i) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                reader.MoveToAttribute(i);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;yield&lt;/span&gt; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XAttribute&lt;/span&gt;(reader.Name, reader.Value);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        } &lt;span style="COLOR: blue"&gt;finally&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            reader.MoveToElement();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt; FirstElement() {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        onlyAttributesWereRead = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!GoToDepth(targetDepth + 1)) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        } &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;(reader, targetDepth + 1);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt; Element(&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; name) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        onlyAttributesWereRead = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!GoToDepth(targetDepth + 1)) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt;.Get(reader.LocalName, reader.NamespaceURI) == name) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;(reader, targetDepth + 1);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (reader.ReadToNextSibling(name.LocalName, name.NamespaceName)) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;(reader, targetDepth + 1);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;&amp;gt; Elements() {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        onlyAttributesWereRead = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;do&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!GoToDepth(targetDepth + 1)) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;yield&lt;/span&gt; &lt;span style="COLOR: blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt; innerReader = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;(reader, targetDepth + 1);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;yield&lt;/span&gt; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; innerReader;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (innerReader.onlyAttributesWereRead) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                reader.Skip();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        } &lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (reader.Depth &amp;gt;= targetDepth + 1);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;&amp;gt; Elements(&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt; name) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        onlyAttributesWereRead = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;do&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!GoToDepth(targetDepth + 1)) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;yield&lt;/span&gt; &lt;span style="COLOR: blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;XName&lt;/span&gt;.Get(reader.LocalName, reader.NamespaceURI) == name) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt; innerReader = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElementReader&lt;/span&gt;(reader, targetDepth + 1);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;yield&lt;/span&gt; &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; innerReader;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (innerReader.onlyAttributesWereRead) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    reader.Skip();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            } &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!reader.ReadToNextSibling(name.LocalName, name.NamespaceName)) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    &lt;span style="COLOR: blue"&gt;yield&lt;/span&gt; &lt;span style="COLOR: blue"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        } &lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (reader.Depth &amp;gt;= targetDepth + 1);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;XElement&lt;/span&gt; ToXElement() {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!onlyAttributesWereRead) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;throw&lt;/span&gt; &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"This operation must be done before retrieving any element"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        onlyAttributesWereRead = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        GoToDepth(targetDepth);&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;XElement&lt;/span&gt;)&lt;span style="COLOR: #2b91af"&gt;XNode&lt;/span&gt;.ReadFrom(reader); &lt;span style="COLOR: green"&gt;//XElement.Load won't work here if it's not the top level element&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; GoToDepth(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; targetDepth) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; startDepth = reader.Depth;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (reader.Depth &amp;gt; targetDepth) { &lt;span style="COLOR: green"&gt;//we need to go up&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (reader.NodeType != &lt;span style="COLOR: #2b91af"&gt;XmlNodeType&lt;/span&gt;.Element || reader.Depth &amp;gt; targetDepth) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (reader.NodeType == &lt;span style="COLOR: #2b91af"&gt;XmlNodeType&lt;/span&gt;.Element) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    reader.Skip();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                } &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!reader.Read()) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (reader.Depth &amp;gt; startDepth) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        } &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; { &lt;span style="COLOR: green"&gt;//we need to go down (or we're already there)&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            &lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (reader.NodeType != &lt;span style="COLOR: #2b91af"&gt;XmlNodeType&lt;/span&gt;.Element || reader.Depth &amp;lt; targetDepth) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (reader.NodeType == &lt;span style="COLOR: #2b91af"&gt;XmlNodeType&lt;/span&gt;.Element &amp;amp;&amp;amp; reader.IsEmptyElement) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    reader.Skip();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                } &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!reader.Read()) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (reader.Depth &amp;lt; startDepth || reader.NodeType == &lt;span style="COLOR: #2b91af"&gt;XmlNodeType&lt;/span&gt;.EndElement) {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;                }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;            }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; reader.Depth == targetDepth;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: blue"&gt;#endif&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt; &lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IDisposable&lt;/span&gt;.Dispose() {&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;        Close();&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;    }&lt;/pre&gt;
&lt;pre style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; COLOR: black; FONT-SIZE: 8pt; OVERFLOW: visible; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e3394e42-3655-42f2-a548-f550f0ce330e" class="wlWriterSmartContent" /&gt;

&lt;p&gt;
&lt;/p&gt;&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/XML"&gt;XML&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/LINQ"&gt;LINQ&lt;/a&gt;&lt;/div&gt;
&lt;img src="http://blog.codebeside.org/aggbug/15.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=jezsElSSfKI:467jiYdpJD8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=jezsElSSfKI:467jiYdpJD8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=jezsElSSfKI:467jiYdpJD8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=jezsElSSfKI:467jiYdpJD8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=jezsElSSfKI:467jiYdpJD8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=jezsElSSfKI:467jiYdpJD8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/jezsElSSfKI" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/09/08/streaming-xml-input-with-xelementreader.aspx</guid>
            <pubDate>Mon, 08 Sep 2008 15:55:50 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/15.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/09/08/streaming-xml-input-with-xelementreader.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/15.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/09/08/streaming-xml-input-with-xelementreader.aspx</feedburner:origLink></item>
        <item>
            <title>The history of WPF</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/18otFmQh8MY/the-history-of-wpf.aspx</link>
            <description>&lt;p&gt;Did you know that the Avalon project (the original name of WPF) was started back in 2001, even before .NET Framework 1.0 was released, from the team that originally developed Internet Explorer 4 DHTML support and the XMLHttpRequest API that enables AJAX?&lt;/p&gt;
&lt;p&gt;I've learned that and some other interesting trivia from this Channel 9 video:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/Charles/Michael-Wallent-Advent-and-Evolution-of-WPF/"&gt;Michael Wallent: Advent and Evolution of WPF&lt;/a&gt;&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:45803bf0-c8c5-4ce7-aa8f-df0b4e396278" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/WPF"&gt;WPF&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/14.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=18otFmQh8MY:xpGeSwU9KcI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=18otFmQh8MY:xpGeSwU9KcI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=18otFmQh8MY:xpGeSwU9KcI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=18otFmQh8MY:xpGeSwU9KcI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=18otFmQh8MY:xpGeSwU9KcI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=18otFmQh8MY:xpGeSwU9KcI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/18otFmQh8MY" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/09/06/the-history-of-wpf.aspx</guid>
            <pubDate>Sat, 06 Sep 2008 15:25:36 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/14.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/09/06/the-history-of-wpf.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/14.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/09/06/the-history-of-wpf.aspx</feedburner:origLink></item>
        <item>
            <title>Channel 9 Videos</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/cFdirxQYrSU/channel-9-videos.aspx</link>
            <description>&lt;p&gt;I've been lately looking at some channel 9 videos, and found a lot of great stuff there. Two that I found particularly interesting were these:&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Contract-Oriented-Programming-and-Spec/"&gt;Expert to Expert: Contract Oriented Programming and Spec#&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/Charles/Ted-Neward-On-Java-and-NET-Software-Academics-versus-Practioners-General-Purpose-Programming-Lan/"&gt;Ted Neward: On Java and .NET, Software Academics versus Practioners, General Purpose Programming Languages&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8e170d6c-c967-445a-ac57-15200eab3698" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/13.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=cFdirxQYrSU:UdxXloghZUM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=cFdirxQYrSU:UdxXloghZUM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=cFdirxQYrSU:UdxXloghZUM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=cFdirxQYrSU:UdxXloghZUM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=cFdirxQYrSU:UdxXloghZUM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=cFdirxQYrSU:UdxXloghZUM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/cFdirxQYrSU" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/09/04/channel-9-videos.aspx</guid>
            <pubDate>Thu, 04 Sep 2008 15:19:39 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/13.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/09/04/channel-9-videos.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/13.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/09/04/channel-9-videos.aspx</feedburner:origLink></item>
        <item>
            <title>Expression CodeDom Visualizer</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/ooAv8lfnWmo/expression-codedom-visualizer.aspx</link>
            <description>&lt;p&gt;Can Erten created a very useful expression tree to CodeDom converter. He wrote about it here: &lt;a href="http://www.canerten.com/meta-programming-with-expression-trees-lambdas-to-codedom-conversion/"&gt;Expression Trees-Lambdas to CodeDom Conversion&lt;/a&gt;. I created a visual studio debugger visualizer based on it. You can find it in attachment. Just copy the assembly to My Documents\Visual Studio 2008\Visualizers and you're set. I also attached the full source code.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.codebeside.org/Files/ExpressionCodeDomVisualizer.dll"&gt;ExpressionCodeDomVisualizer.dll&lt;/a&gt; &lt;a href="http://blog.codebeside.org/Files/ExpressionCodeDomVisualizerSourceCode.zip"&gt;ExpressionCodeDomVisualizerSourceCode.zip&lt;/a&gt;&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:75e98406-6505-4658-9b7d-558f5bf761b0" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/LINQ"&gt;LINQ&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/12.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=ooAv8lfnWmo:BnXF0yyg-mw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=ooAv8lfnWmo:BnXF0yyg-mw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=ooAv8lfnWmo:BnXF0yyg-mw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=ooAv8lfnWmo:BnXF0yyg-mw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=ooAv8lfnWmo:BnXF0yyg-mw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=ooAv8lfnWmo:BnXF0yyg-mw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/ooAv8lfnWmo" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/08/28/expression-codedom-visualizer.aspx</guid>
            <pubDate>Thu, 28 Aug 2008 21:26:48 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/12.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/08/28/expression-codedom-visualizer.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/12.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/08/28/expression-codedom-visualizer.aspx</feedburner:origLink></item>
        <item>
            <title>StaticStringDictionary - Fast Switching with LINQ revisited</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/IJOTX4Q6gZ8/staticstringdictionary-fast-switching-with-linq-revisited.aspx</link>
            <description>&lt;p&gt;Expression trees are one of the more powerful features of C#. They let you manipulate code in ways that almost remind you of LISP macros (but at runtime instead of compile time). Since I discovered them, I managed to eliminate almost completely the usage of reflection in my code, replacing it with much faster code using techniques similar to what Roger Alsing described in &lt;a href="http://rogeralsing.com/2008/02/28/linq-expressions-creating-objects/"&gt;Linq Expressions - Creating objects&lt;/a&gt;. Expression trees also made possible something that I find myself using a lot these days: what Jomo Fisher described in &lt;a href="http://blogs.msdn.com/jomo_fisher/archive/2007/03/28/fast-switching-with-linq.aspx"&gt;Fast Switching with LINQ&lt;/a&gt;. It's a great example of the powerful things C# allows you to do with a little creativity. As I used it more and more, I collected a few modifications to the original code, so I though in sharing them here. I named it StaticStringDictionary.&lt;/p&gt;
&lt;p&gt;The main difference of this version from the original code is that I don't assume that the key being looked up is in the dictionary. That forces me to call string.Equals at the end to check if the key is the correct one. If string.Equals returns false, a fallback function is used. This also invalidates the optimization in the original code that took advantage of different keys with the same value. I also made StaticStringDictionary&amp;lt;T&amp;gt; implement IDictionary&amp;lt;string, T&amp;gt; so it would be easier to adapt existing code.&lt;/p&gt;
&lt;p&gt;Unfortunately I also stumbled over some problems with certain dictionaries, similar to the ones that Raptor-75 wrote about in the comments of the original article. After a few hours of debugging together with Rui Eugénio (and also with the help of &lt;a href="http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx"&gt;Expression Tree Visualizer&lt;/a&gt; and &lt;a href="http://www.manuelabadia.com/blog/PermaLink,guid,9160035f-490f-46bd-ab55-516b5c7545af.aspx"&gt;StructsViz DebuggerVisualizer&lt;/a&gt;), we managed to fix all the problems we found. The comparer was changed to ensure the characters of indices already tested are ignored for the ordering, and in some situations the algorithm has to some backtracking.&lt;/p&gt;
&lt;p&gt;Without further due, here's the code:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Collections;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Linq.Expressions;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Reflection;

&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; StaticStringDictionary {

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; StaticStringDictionary&amp;lt;Type&amp;gt; Create&amp;lt;Type&amp;gt;(IEnumerable&amp;lt;KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;&amp;gt; dict, Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; fallback) {
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; StaticStringDictionary&amp;lt;Type&amp;gt;(dict, fallback);
    }
}

&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; StaticStringDictionary&amp;lt;Type&amp;gt; : IDictionary&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; {

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; fallback;
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; switchFunction;

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; StaticStringDictionary(IEnumerable&amp;lt;KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;&amp;gt; dict, Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; fallback) {
        &lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fallback = fallback;
        &lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.switchFunction = CreateSwitch(dict);
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt; SwitchCase {
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; Key;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;readonly&lt;/span&gt; Type Value;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; SwitchCase(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; key, Type &lt;span style="COLOR: #0000ff"&gt;value&lt;/span&gt;) {
            Key = key;
            Value = &lt;span style="COLOR: #0000ff"&gt;value&lt;/span&gt;;
        }
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;override&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; ToString() {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; Key + &lt;span style="COLOR: #006080"&gt;" "&lt;/span&gt; + Value.ToString();
        }
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; CreateSwitch(IEnumerable&amp;lt;KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;&amp;gt; dict) {
        var cases = dict.Select(pair =&amp;gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; SwitchCase(pair.Key, pair.Value)).ToList();
        ParameterExpression keyParameter = Expression.Parameter(&lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;), &lt;span style="COLOR: #006080"&gt;"key"&lt;/span&gt;);
        var expr = Expression.Lambda&amp;lt;Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;&amp;gt;(
            SwitchOnLength(keyParameter, cases.OrderBy(switchCase =&amp;gt; switchCase.Key.Length).ToArray(), 0, cases.Count - 1),
            &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; ParameterExpression[] { keyParameter }
        );
        var del = expr.Compile();
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; del;
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; Expression SwitchOnLength(ParameterExpression keyParameter, SwitchCase[] switchCases, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; lower, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; upper) {                
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (switchCases[lower].Key.Length == switchCases[upper].Key.Length) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; SwitchOnChar(keyParameter, switchCases.Skip(lower).Take(upper - lower + 1).ToArray(), 0, 0, upper - lower);
        }                
        &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; middle = GetIndexOfFirstDifferentCaseFromUp(switchCases, lower, MidPoint(lower, upper), upper, switchCase =&amp;gt; switchCase.Key.Length);
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (middle == -1) {
            &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
        }
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; Expression.Condition(
            Expression.LessThan(Expression.Call(keyParameter, stringLength), Expression.Constant(switchCases[middle + 1].Key.Length)),
            SwitchOnLength(keyParameter, switchCases, lower, middle),
            SwitchOnLength(keyParameter, switchCases, middle + 1, upper));
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; Expression SwitchOnChar(ParameterExpression keyParameter, SwitchCase[] switchCases, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; index, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; lower, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; upper) {
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (index == switchCases[upper].Key.Length) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;
        }

        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (lower == upper) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; Expression.Condition(
                Expression.Call(stringEquals, keyParameter, Expression.Constant(switchCases[lower].Key)),
                Expression.Convert(Expression.Constant(switchCases[lower].Value), &lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(Type)),
                Expression.Invoke(Expression.Constant(fallback), keyParameter));
        }

        switchCases = switchCases.Skip(lower).Take(upper - lower + 1)
            .OrderBy(switchCase =&amp;gt; switchCase.Key, StaticStringDictionaryComparer.For(index)).ToArray();

        upper = upper - lower;
        lower = 0;

        &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; middle = MidPoint(lower, upper);

        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (switchCases[lower].Key[index] == switchCases[middle].Key[index]) {
            var result = SwitchOnChar(keyParameter, switchCases, index + 1, lower, upper);
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (result != &lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; result;
            }
        }

        middle = GetIndexOfFirstDifferentCaseFromUp(switchCases, lower, middle, upper, switchCase =&amp;gt; switchCase.Key[index]);
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (middle == -1) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;
        }

        var trueBranch = SwitchOnChar(keyParameter, switchCases, index, lower, middle);
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (trueBranch == &lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;
        }
        
        var falseBranch = SwitchOnChar(keyParameter, switchCases, index, middle + 1, upper);
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (falseBranch == &lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;
        }

        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; Expression.Condition(
            Expression.LessThan(Expression.Call(keyParameter, stringIndex, Expression.Constant(index)),
                Expression.Constant(switchCases[middle + 1].Key[index])),
                trueBranch,
                falseBranch);
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; MidPoint(&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; lower, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; upper) {
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; ((upper - lower + 1) / 2) + lower;
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; GetIndexOfFirstDifferentCaseFromUp&amp;lt;T&amp;gt;(SwitchCase[] cases, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; lower, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; middle, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; upper, Func&amp;lt;SwitchCase, T&amp;gt; selector) {
        T firstValue = selector(cases[middle]);
        &lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; i = middle - 1; i &amp;gt;= lower; --i) {
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (!firstValue.Equals(selector(cases[i]))) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; i;
            }
        }
        &lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; i = middle + 1; i &amp;lt;= upper; ++i) {
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (!firstValue.Equals(selector(cases[i]))) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; i - 1;
            }
        }
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; -1;
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; MethodInfo stringLength = &lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;).GetMethod(&lt;span style="COLOR: #006080"&gt;"get_Length"&lt;/span&gt;);
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; MethodInfo stringIndex = &lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;).GetMethod(&lt;span style="COLOR: #006080"&gt;"get_Chars"&lt;/span&gt;);
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; MethodInfo stringEquals = &lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;).GetMethod(&lt;span style="COLOR: #006080"&gt;"Equals"&lt;/span&gt;, &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;[] { &lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;), &lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;) });

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Add(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; key, Type &lt;span style="COLOR: #0000ff"&gt;value&lt;/span&gt;) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; ContainsKey(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; key) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; ICollection&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; Keys {
        get { &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(); }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; Remove(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; key) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; TryGetValue(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; key, &lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt; Type &lt;span style="COLOR: #0000ff"&gt;value&lt;/span&gt;) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; ICollection&amp;lt;Type&amp;gt; Values {
        get { &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(); }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; Type &lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;[&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; key] {
        get { &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;.IsNullOrEmpty(key) ? fallback(key) : switchFunction(key); }
        set { &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(); }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Add(KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; item) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Clear() {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; Contains(KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; item) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; CopyTo(KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;[] array, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; arrayIndex) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; Count {
        get { &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(); }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; IsReadOnly {
        get { &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;; }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; Remove(KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; item) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; IEnumerator&amp;lt;KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;&amp;gt; GetEnumerator() {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    IEnumerator IEnumerable.GetEnumerator() {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }
}

&lt;span style="COLOR: #0000ff"&gt;internal&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; StaticStringDictionaryComparer : IComparer&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; {

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;readonly&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; startIndex;
    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; StaticStringDictionaryComparer(&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; startIndex) {
        &lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.startIndex = startIndex;
    }

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; Dictionary&amp;lt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;, IComparer&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; comparers = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;, IComparer&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;();

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; IComparer&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; For(&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; startIndex) {
        IComparer&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; comparer;
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (!comparers.TryGetValue(startIndex, &lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt; comparer)) {
            comparer = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; StaticStringDictionaryComparer(startIndex);
            comparers.Add(startIndex, comparer);
        }
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; comparer;
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; Compare(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; x, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; y) {

        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (x.Length != y.Length) {
            &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
        }

        &lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; i = startIndex; i &amp;lt; x.Length; i++) {
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (x[i] &amp;gt; y[i]) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; 1;
            } &lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (x[i] &amp;lt; y[i]) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; -1;
            }
        }

        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; 0;
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And here's the test case for Raptor-75's problem:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Main() {

   var dict = StaticStringDictionary.Create(
       &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;gt; {
           {&lt;span style="COLOR: #006080"&gt;"Ado"&lt;/span&gt;, 0},
           {&lt;span style="COLOR: #006080"&gt;"A2o"&lt;/span&gt;, 1},
           {&lt;span style="COLOR: #006080"&gt;"A2i"&lt;/span&gt;, 2},
           {&lt;span style="COLOR: #006080"&gt;"B2o"&lt;/span&gt;, 3},
           {&lt;span style="COLOR: #006080"&gt;"AdoX"&lt;/span&gt;, 4},
           {&lt;span style="COLOR: #006080"&gt;"AdPX"&lt;/span&gt;, 5}
       },
       key =&amp;gt; -1);

    Test(&lt;span style="COLOR: #006080"&gt;"Ado"&lt;/span&gt;, dict);
    Test(&lt;span style="COLOR: #006080"&gt;"A2o"&lt;/span&gt;, dict);
    Test(&lt;span style="COLOR: #006080"&gt;"A2i"&lt;/span&gt;, dict);
    Test(&lt;span style="COLOR: #006080"&gt;"B2o"&lt;/span&gt;, dict);
    Test(&lt;span style="COLOR: #006080"&gt;"AdoX"&lt;/span&gt;, dict);
    Test(&lt;span style="COLOR: #006080"&gt;"AdPX"&lt;/span&gt;, dict);
    Test(&lt;span style="COLOR: #006080"&gt;"xpto"&lt;/span&gt;, dict);
}

&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Test(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; key, IDictionary&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;gt; dict) {
    Console.WriteLine(key + &lt;span style="COLOR: #006080"&gt;": "&lt;/span&gt; + dict[key]);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It should produce this output when run:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;Ado: 0
A2o: 1
A2i: 2
B2o: 3
AdoX: 4
AdPX: 5
xpto: -1&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;I also found useful to define this variation when I also need to do reverse lookups:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;

&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; DoubleStaticStringDictionary {

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; DoubleStaticStringDictionary&amp;lt;Type&amp;gt; Create&amp;lt;Type&amp;gt;(IEnumerable&amp;lt;KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;&amp;gt; dict, Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; fallback, Func&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; reverseFallback) {
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; DoubleStaticStringDictionary&amp;lt;Type&amp;gt;(dict, fallback, reverseFallback);
    }
}

&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; DoubleStaticStringDictionary&amp;lt;Type&amp;gt; : StaticStringDictionary&amp;lt;Type&amp;gt;, IDictionary&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; {

    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; Func&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; reverseFallback;
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; IDictionary&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; reverseDict;

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; DoubleStaticStringDictionary(IEnumerable&amp;lt;KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt;&amp;gt; dict, Func&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; fallback, Func&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; reverseFallback)
        : &lt;span style="COLOR: #0000ff"&gt;base&lt;/span&gt;(dict, fallback) {

        &lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.reverseFallback = reverseFallback;

        reverseDict = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt;();
        &lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt; (KeyValuePair&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;, Type&amp;gt; pair &lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt; dict) {
            reverseDict.Add(pair.Value, pair.Key);
        }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Add(Type key, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;value&lt;/span&gt;) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; ContainsKey(Type key) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; ICollection&amp;lt;Type&amp;gt; Keys {
        get { &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(); }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; Remove(Type key) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; TryGetValue(Type key, &lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;value&lt;/span&gt;) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; ICollection&amp;lt;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; Values {
        get { &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(); }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;[Type key] {
        get {
            &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; result;
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (reverseDict.TryGetValue(key, &lt;span style="COLOR: #0000ff"&gt;out&lt;/span&gt; result)) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; result;
            } &lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt; {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; reverseFallback(key);
            }
        }
        set { &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException(); }
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Add(KeyValuePair&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; item) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; Contains(KeyValuePair&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; item) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; CopyTo(KeyValuePair&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt;[] array, &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; arrayIndex) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt; Remove(KeyValuePair&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt; item) {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }

    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; IEnumerator&amp;lt;KeyValuePair&amp;lt;Type, &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; GetEnumerator() {
        &lt;span style="COLOR: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; InvalidOperationException();
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:03700eab-7d5b-4522-be7f-a22be47bf77c" class="wlWriterSmartContent" /&gt;

&lt;p&gt;
&lt;/p&gt;&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/LINQ"&gt;LINQ&lt;/a&gt;&lt;/div&gt;
&lt;img src="http://blog.codebeside.org/aggbug/10.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=IJOTX4Q6gZ8:O8vL9jIbwIY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=IJOTX4Q6gZ8:O8vL9jIbwIY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=IJOTX4Q6gZ8:O8vL9jIbwIY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=IJOTX4Q6gZ8:O8vL9jIbwIY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=IJOTX4Q6gZ8:O8vL9jIbwIY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=IJOTX4Q6gZ8:O8vL9jIbwIY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/IJOTX4Q6gZ8" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/08/28/staticstringdictionary-fast-switching-with-linq-revisited.aspx</guid>
            <pubDate>Thu, 28 Aug 2008 20:57:57 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/10.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/08/28/staticstringdictionary-fast-switching-with-linq-revisited.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/10.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/08/28/staticstringdictionary-fast-switching-with-linq-revisited.aspx</feedburner:origLink></item>
        <item>
            <title>Counting the number of messages in a Message Queue in .NET</title>
            <category>.NET</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/-lOh5GW21Vg/counting-the-number-of-messages-in-a-message-queue-in.aspx</link>
            <description>&lt;p&gt;.NET includes a managed MSMQ API (System.Messaging) to send and receive messages, but unfortunately there's a key functionality missing: obtaining the number of messages currently in the queue. Yoel Arnon talks about this problem with more detail &lt;a title="Counting the number of messages in a queue" href="http://msmq.spaces.live.com/Blog/cns!1pGjsZEQBluYM9y4YjJoNkTg!113.entry"&gt;here&lt;/a&gt; and &lt;a title="Counting messages in Queue - the .NET version" href="http://msmq.spaces.live.com/blog/cns!393534E869CE55B7!121.entry"&gt;here&lt;/a&gt;. After reading that, we learn that there are three ways to overcome this limitation: using the MSMQ performance counters (with the .NET Performance Counter API or via WMI), using the MSMQ COM wrapper, or using the MSMQ Admin API directly. The first option is not very reliable and the second one is not available on all versions of MSMQ, so the third one is the preferable way. It's also the most complex. Jared Evans has explained how to do it using a C++ Managed wrapper &lt;a href="http://www.jaredlog.com/?p=101"&gt;here&lt;/a&gt;, but that approach adds some complexity to the deployment of your application. It forces you to redistribute the Microsoft Visual C++ Redistributable Package, and if you want to support the x64 versions of Windows, you have to build the C++ wrapper for both x86 and x64 and have additional logic in the application installer to know which version of your assembly to install (and the same for the Visual C++ Redistributable which also has two versions). Some months ago, I upgraded my home PC to Windows Vista x64, so at the time I decided to develop a C# only solution for this, as there wasn't any publicly available on the net.&lt;/p&gt;
&lt;p&gt;The first approach I tried was to look at the mq.h file and translate all the required structures to C#. This proved to be a nightmare, as at the time the &lt;a href="http://www.codeplex.com/clrinterop"&gt;P/Invoke Interop Assistant&lt;/a&gt; hadn't been created yet and the structures proved to be a little complex. So instead of trying to translate the whole structures correctly, I turned on the debugger and started examining the fields that were really needed, defining dummy spacer fields for the rest. This took a while, but it was worth it. Here's the code:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Messaging;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Runtime.InteropServices;

&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; MessageQueueExtensions {
 
    [DllImport(&lt;span style="COLOR: #006080"&gt;"mqrt.dll"&lt;/span&gt;)]
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;unsafe&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; MQMgmtGetInfo(&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;* computerName, &lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;* objectName, MQMGMTPROPS* mgmtProps);
 
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; VT_NULL = 1;
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; VT_UI4 = 19;
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; PROPID_MGMT_QUEUE_MESSAGE_COUNT = 7;
 
    &lt;span style="COLOR: #008000"&gt;//size must be 16&lt;/span&gt;
    [StructLayout(LayoutKind.Sequential)]
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt; MQPROPVariant {
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; vt;       &lt;span style="COLOR: #008000"&gt;//0&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; spacer;   &lt;span style="COLOR: #008000"&gt;//1&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt; spacer2; &lt;span style="COLOR: #008000"&gt;//2&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; spacer3;   &lt;span style="COLOR: #008000"&gt;//4&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; ulVal;    &lt;span style="COLOR: #008000"&gt;//8&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; spacer4;   &lt;span style="COLOR: #008000"&gt;//12&lt;/span&gt;
    }
 
    &lt;span style="COLOR: #008000"&gt;//size must be 16 in x86 and 28 in x64&lt;/span&gt;
    [StructLayout(LayoutKind.Sequential)]
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;unsafe&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt; MQMGMTPROPS {
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; cProp;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;* aPropID;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; MQPROPVariant* aPropVar;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;* status;
    }   
    
    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; GetCount(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt; MessageQueue queue) {
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; GetCount(queue.Path);
    }
 
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;unsafe&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; GetCount(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; path) {
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (!MessageQueue.Exists(path)) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; 0;
        }
 
        MQMGMTPROPS props = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; MQMGMTPROPS();
        props.cProp = 1;
 
        &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; aPropId = PROPID_MGMT_QUEUE_MESSAGE_COUNT;
        props.aPropID = &amp;amp;aPropId;
 
        MQPROPVariant aPropVar = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; MQPROPVariant();
        aPropVar.vt = VT_NULL;
        props.aPropVar = &amp;amp;aPropVar;
 
        &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; status = 0;
        props.status = &amp;amp;status;
 
        IntPtr objectName = Marshal.StringToBSTR(&lt;span style="COLOR: #006080"&gt;"queue=Direct=OS:"&lt;/span&gt; + path);
        &lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt; {
            &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; result = MQMgmtGetInfo(&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;, (&lt;span style="COLOR: #0000ff"&gt;char&lt;/span&gt;*)objectName, &amp;amp;props);
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (result != 0 || *props.status != 0 || props.aPropVar-&amp;gt;vt != VT_UI4) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; 0;
            } &lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt; {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; props.aPropVar-&amp;gt;ulVal;
            }
        } &lt;span style="COLOR: #0000ff"&gt;finally&lt;/span&gt; {
            Marshal.FreeBSTR(objectName);
        }
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Note that you'll have to go to the project properties and check the "Allow unsafe code" option for this to build. &lt;/p&gt;
&lt;p&gt;Here's an example usage:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Main() {
 
    &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; queueName = &lt;span style="COLOR: #006080"&gt;@".\Private$\MyQueue"&lt;/span&gt;;
 
    &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (MessageQueue.Exists(queueName)) {
        MessageQueue.Delete(queueName);
    }
 
    MessageQueue queue = MessageQueue.Create(queueName);
    Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 0: "&lt;/span&gt; + queue.GetCount());
 
    queue.Send(&lt;span style="COLOR: #006080"&gt;"ping"&lt;/span&gt;, &lt;span style="COLOR: #006080"&gt;"ping"&lt;/span&gt;);
    Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 1: "&lt;/span&gt; + queue.GetCount());
 
    queue.Send(&lt;span style="COLOR: #006080"&gt;"ping2"&lt;/span&gt;, &lt;span style="COLOR: #006080"&gt;"ping2"&lt;/span&gt;);
    Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 2: "&lt;/span&gt; + queue.GetCount());
 
    queue.Receive();
    Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 1: "&lt;/span&gt; + queue.GetCount());
 
    queue.Send(&lt;span style="COLOR: #006080"&gt;"ping3"&lt;/span&gt;, &lt;span style="COLOR: #006080"&gt;"ping3"&lt;/span&gt;);
    Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 2: "&lt;/span&gt; + queue.GetCount());
 
    MessageQueue.Delete(queueName);
    Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 0: "&lt;/span&gt; + queue.GetCount());
}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;
&lt;p&gt;After building and running, it should give you the following output:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;Count should be 0: 0
Count should be 1: 1
Count should be 2: 2
Count should be 1: 1
Count should be 2: 2
Count should be 0: 0&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;
&lt;p&gt;Last week my colleague Rui Eugénio at OutSystems was doing a merge that involved similar code and commented to me "Couldn't this be done without using unsafe code?". That left me wondering, so I decided to give it a try. It turns out it wasn't that hard. Here's the safe version of the previous code:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Messaging;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Runtime.InteropServices;
 
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; MessageQueueExtensions {
 
    [DllImport(&lt;span style="COLOR: #006080"&gt;"mqrt.dll"&lt;/span&gt;)]
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; MQMgmtGetInfo([MarshalAs(UnmanagedType.BStr)]&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; computerName, [MarshalAs(UnmanagedType.BStr)]&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; objectName, &lt;span style="COLOR: #0000ff"&gt;ref&lt;/span&gt; MQMGMTPROPS mgmtProps);
 
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; VT_NULL = 1;
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; VT_UI4 = 19;
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; PROPID_MGMT_QUEUE_MESSAGE_COUNT = 7;
 
    &lt;span style="COLOR: #008000"&gt;//size must be 16&lt;/span&gt;
    [StructLayout(LayoutKind.Sequential)]
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt; MQPROPVariant {
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; vt;       &lt;span style="COLOR: #008000"&gt;//0&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt; spacer;   &lt;span style="COLOR: #008000"&gt;//1&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;short&lt;/span&gt; spacer2; &lt;span style="COLOR: #008000"&gt;//2&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; spacer3;   &lt;span style="COLOR: #008000"&gt;//4&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; ulVal;    &lt;span style="COLOR: #008000"&gt;//8&lt;/span&gt;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; spacer4;   &lt;span style="COLOR: #008000"&gt;//12&lt;/span&gt;
    }
 
    &lt;span style="COLOR: #008000"&gt;//size must be 16 in x86 and 28 in x64&lt;/span&gt;
    [StructLayout(LayoutKind.Sequential)]
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;struct&lt;/span&gt; MQMGMTPROPS {
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; cProp;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; IntPtr aPropID;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; IntPtr aPropVar;
        &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; IntPtr status;
    }
 
    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; GetCount(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt; MessageQueue queue) {
        &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; GetCount(queue.Path);
    }
 
    &lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;uint&lt;/span&gt; GetCount(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; path) {
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (!MessageQueue.Exists(path)) {
            &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; 0;
        }
 
        MQMGMTPROPS props = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; MQMGMTPROPS { cProp = 1 };
        &lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt; {
            props.aPropID = Marshal.AllocHGlobal(&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;));
            Marshal.WriteInt32(props.aPropID, PROPID_MGMT_QUEUE_MESSAGE_COUNT);
 
            props.aPropVar = Marshal.AllocHGlobal(Marshal.SizeOf(&lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(MQPROPVariant)));
            Marshal.StructureToPtr(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; MQPROPVariant { vt = VT_NULL }, props.aPropVar, &lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;);
 
            props.status = Marshal.AllocHGlobal(&lt;span style="COLOR: #0000ff"&gt;sizeof&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;));
            Marshal.WriteInt32(props.status, 0);
 
            &lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; result = MQMgmtGetInfo(&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;, &lt;span style="COLOR: #006080"&gt;"queue=Direct=OS:"&lt;/span&gt; + path, &lt;span style="COLOR: #0000ff"&gt;ref&lt;/span&gt; props);
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (result != 0 || Marshal.ReadInt32(props.status) != 0) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; 0;
            }
 
            MQPROPVariant propVar = (MQPROPVariant)Marshal.PtrToStructure(props.aPropVar, &lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;(MQPROPVariant));
            &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (propVar.vt != VT_UI4) {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; 0;
            } &lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt; {
                &lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt; propVar.ulVal;
            }
        } &lt;span style="COLOR: #0000ff"&gt;finally&lt;/span&gt; {
            Marshal.FreeHGlobal(props.aPropID);
            Marshal.FreeHGlobal(props.aPropVar);
            Marshal.FreeHGlobal(props.status);
        }
    }
}
 
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; MessageQueueExtensionsTest {
 
    &lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Main() {
 
        &lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; queueName = &lt;span style="COLOR: #006080"&gt;@".\Private$\MyQueue"&lt;/span&gt;;
 
        &lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt; (MessageQueue.Exists(queueName)) {
            MessageQueue.Delete(queueName);
        }
 
        MessageQueue queue = MessageQueue.Create(queueName);
        Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 0: "&lt;/span&gt; + queue.GetCount());
 
        queue.Send(&lt;span style="COLOR: #006080"&gt;"ping"&lt;/span&gt;, &lt;span style="COLOR: #006080"&gt;"ping"&lt;/span&gt;);
        Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 1: "&lt;/span&gt; + queue.GetCount());
 
        queue.Send(&lt;span style="COLOR: #006080"&gt;"ping2"&lt;/span&gt;, &lt;span style="COLOR: #006080"&gt;"ping2"&lt;/span&gt;);
        Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 2: "&lt;/span&gt; + queue.GetCount());
 
        queue.Receive();
        Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 1: "&lt;/span&gt; + queue.GetCount());
 
        queue.Send(&lt;span style="COLOR: #006080"&gt;"ping3"&lt;/span&gt;, &lt;span style="COLOR: #006080"&gt;"ping3"&lt;/span&gt;);
        Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 2: "&lt;/span&gt; + queue.GetCount());
 
        MessageQueue.Delete(queueName);
        Console.WriteLine(&lt;span style="COLOR: #006080"&gt;"Count should be 0: "&lt;/span&gt; + queue.GetCount());
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p /&gt;&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:67e02104-54a8-47fd-b534-822d804bc739" class="wlWriterSmartContent" /&gt;

&lt;p&gt;
&lt;/p&gt;&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/MSMQ"&gt;MSMQ&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;&lt;/div&gt;
&lt;img src="http://blog.codebeside.org/aggbug/8.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=-lOh5GW21Vg:DtvNJ3u9T2E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=-lOh5GW21Vg:DtvNJ3u9T2E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=-lOh5GW21Vg:DtvNJ3u9T2E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=-lOh5GW21Vg:DtvNJ3u9T2E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=-lOh5GW21Vg:DtvNJ3u9T2E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=-lOh5GW21Vg:DtvNJ3u9T2E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/-lOh5GW21Vg" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/08/27/counting-the-number-of-messages-in-a-message-queue-in.aspx</guid>
            <pubDate>Wed, 27 Aug 2008 10:29:48 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/8.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/08/27/counting-the-number-of-messages-in-a-message-queue-in.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/8.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/08/27/counting-the-number-of-messages-in-a-message-queue-in.aspx</feedburner:origLink></item>
        <item>
            <title>Welcome</title>
            <category>Misc</category>
            <link>http://feedproxy.google.com/~r/CodeBeside/~3/0U-xjjg3qTs/welcome.aspx</link>
            <description>&lt;p&gt;Welcome to my blog. My name is Gustavo Guerra and I'm a software developer at OutSystems R&amp;amp;D. I've been wanting to enter the blogosphere for a long time now, but I always kept postponing it with the excuse that I was too busy with other things. But today I decided that it would be now or never, so here it goes... &lt;/p&gt;
&lt;p&gt;I won't be very consistent in the subject of the posts, as I have a few unrelated interests. Some things I plan on talking about are WPF, functional programming, parser development, XML processing, developing with the &lt;a href="http://www.outsystems.com"&gt;OutSystems All-in-one Agile Platform&lt;/a&gt;, and even photography. I hope you enjoy the content.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6ecc45b9-6694-4dd3-ae15-1a5f8c0e0fcf" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Misc"&gt;Misc&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.codebeside.org/aggbug/7.aspx" width="1" height="1" /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=0U-xjjg3qTs:WhDXPT3oz28:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=0U-xjjg3qTs:WhDXPT3oz28:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=0U-xjjg3qTs:WhDXPT3oz28:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=0U-xjjg3qTs:WhDXPT3oz28:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?i=0U-xjjg3qTs:WhDXPT3oz28:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CodeBeside?a=0U-xjjg3qTs:WhDXPT3oz28:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CodeBeside?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CodeBeside/~4/0U-xjjg3qTs" height="1" width="1"/&gt;</description>
            <dc:creator>Gustavo Guerra</dc:creator>
            <guid isPermaLink="false">http://blog.codebeside.org/archive/2008/08/26/welcome.aspx</guid>
            <pubDate>Tue, 26 Aug 2008 17:28:30 GMT</pubDate>
            <wfw:comment>http://blog.codebeside.org/comments/7.aspx</wfw:comment>
            <comments>http://blog.codebeside.org/archive/2008/08/26/welcome.aspx#feedback</comments>
            <wfw:commentRss>http://blog.codebeside.org/comments/commentRss/7.aspx</wfw:commentRss>
        <feedburner:origLink>http://blog.codebeside.org/archive/2008/08/26/welcome.aspx</feedburner:origLink></item>
    </channel>
</rss>
