<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Richard Cook</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/rcook/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/rcook/feed.xml</link>
    <description>Engineering excellently</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:27:22 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>So long!</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/so-long</link>
      <pubDate>Wed, 03 Apr 2013 08:40:09 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2013/04/03/so-long/</guid>
      <description><![CDATA[Wow, it's been a while since I posted! Anyway, big news: I'll be leaving Microsoft for new pastures...]]></description>
      <content:encoded><![CDATA[<p>Wow, it's been a while since I posted! Anyway, big news: I'll be leaving Microsoft for new pastures on Friday 12 April 2013.</p>
<p>-Richard</p>]]></content:encoded>
    </item>
    <item>
      <title>Engineering Excellence</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/engineering-excellence</link>
      <pubDate>Tue, 21 Dec 2010 15:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2010/12/21/engineering-excellence/</guid>
      <description><![CDATA[Just joined the Engineering Excellence team at Microsoft.]]></description>
      <content:encoded><![CDATA[<p>Just joined the Engineering Excellence team at Microsoft.</p>]]></content:encoded>
    </item>
    <item>
      <title>Issues with Office 2007 PIA redist and ComponentCheck.exe</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/issues-with-office-2007-pia-redist-and-componentcheck-exe</link>
      <pubDate>Thu, 12 Mar 2009 13:14:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2009/03/12/issues-with-office-2007-pia-redist-and-componentcheck-exe/</guid>
      <description><![CDATA[A number of people (see this and this for starters) have reported weird behaviour with...]]></description>
      <content:encoded><![CDATA[<P>A number of people (see <A href="https://social.msdn.microsoft.com/Forums/en-US/vsto/thread/7854d15c-f669-49a9-90fc-2a6cce028cf0/?ffpr=0" mce_href="https://social.msdn.microsoft.com/Forums/en-US/vsto/thread/7854d15c-f669-49a9-90fc-2a6cce028cf0/?ffpr=0">this</A> and <A href="https://blogs.msdn.com/vsto/archive/2008/05/20/common-pitfalls-during-pia-deployment-and-installation.aspx#9467822" mce_href="https://blogs.msdn.com/vsto/archive/2008/05/20/common-pitfalls-during-pia-deployment-and-installation.aspx#9467822">this</A> for starters) have reported weird behaviour with <TT>ComponentCheck.exe</TT> which is used as the prerequisite checker for the VSTO Office 2007 PIA redistributable package that was added in Visual Studio 2008 SP1.</P>
<P>For those of you unfamiliar with how the <TT>setup.exe</TT> is created when an add-in is published, it may come as a surprise to learn that <TT>ComponentCheck.exe</TT> ends up being embedded directly into <TT>setup.exe</TT>. When <TT>setup.exe</TT> is run on the target machine, <TT>ComponentCheck.exe</TT> is unpacked to a temporary directory and run from there.</P>
<P>If you're running into unexpected behaviour (e.g. the PIA installer running when you believe it shouldn't or, conversely, the PIA installer not running at all when you believe it should), you might want to try testing <TT>ComponentCheck.exe</TT> by copying it from the <TT>%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\Office2007PIARedist</TT> directory on your Visual Studio 2008 SP1 dev box to an arbitrary location on a test machine and running it from a batch file as follows:</P><PRE><CODE>
@echo off
ComponentCheck.exe
echo %ERRORLEVEL%
</CODE></PRE>
<P>This just serves to run the program and echo its output/return value to the console. This script should echo <TT>1</TT> if the PIAs are already installed or <TT>0</TT> otherwise. The <TT>PIAInstallAction</TT> property is set to this return value and used to block or enable installation of the PIAs respectively (see the <TT>&lt;BypassIf Property="PIAInstallAction" Compare="ValueNotEqualTo" Value="0" /&gt;</TT> element in <TT>product.xml</TT>). You might want to consider trying this a machine with Office 2007 PIAs installed and another machine without the Office 2007 PIAs installed.</P>
<P>If you're seeing genuine issues with this component after running this short test, please don't hesitate to let us know.</P>]]></content:encoded>
    </item>
    <item>
      <title>VSTO runtime compatibility</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/vsto-runtime-compatibility</link>
      <pubDate>Tue, 24 Feb 2009 12:43:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2009/02/24/vsto-runtime-compatibility/</guid>
      <description><![CDATA[Some items on VSTO compatibility including my own compatibility matrix:

My article on the...]]></description>
      <content:encoded><![CDATA[<P>Some items on VSTO compatibility including my own <EM>compatibility matrix</EM>:</P>
<UL>
<LI><A href="https://blogs.msdn.com/rcook/pages/visual-studio-tools-for-office-versioning-and-compatibility.aspx" mce_href="https://blogs.msdn.com/rcook/pages/visual-studio-tools-for-office-versioning-and-compatibility.aspx">My article on the subject</A></LI>
<LI><A href="https://msdn.microsoft.com/en-us/library/bb608603.aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/library/bb608603.aspx">A MSDN article on this subject</A></LI>
<LI><A href="https://msdn.microsoft.com/en-us/library/ms178739.aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/library/ms178739.aspx">Another MSDN article on related subject matter</A></LI></UL>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio Tools for Office versioning and compatibility</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/visual-studio-tools-for-office-versioning-and-compatibility</link>
      <pubDate>Tue, 24 Feb 2009 12:32:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2009/02/24/visual-studio-tools-for-office-versioning-and-compatibility/</guid>
      <description><![CDATA[Visual Studio Tools for Office versioning and compatibility
Abbreviations used in this...]]></description>
      <content:encoded><![CDATA[<DIV class=Section1>
<H1 style="MARGIN: 24pt 0in 0pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=5><FONT color=#365f91><FONT face=Cambria>Visual Studio Tools for Office versioning and compatibility<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></FONT></SPAN></H1>
<H2 style="MARGIN: 10pt 0in 0pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=4><FONT color=#4f81bd><FONT face=Cambria>Abbreviations used in this document<o:p></o:p></FONT></FONT></FONT></SPAN></H2>
<TABLE class=MsoTableLightGridAccent3 style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #9BBB59 1.0pt; mso-border-themecolor: accent3; mso-yfti-tbllook: 1152; mso-padding-alt: 0in 5.4pt 0in 5.4pt" cellSpacing=0 cellPadding=0 border=1 class="MsoTableLightGridAccent3">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi"><FONT size=3>CAS<o:p></o:p></FONT></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 64"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>Code Access Security<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi"><FONT size=3>FX<o:p></o:p></FONT></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 128"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>.NET Framework<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi"><FONT size=3>MAF<o:p></o:p></FONT></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 64"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>Managed Add-in Framework<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi"><FONT size=3>SE<o:p></o:p></FONT></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 128"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>Second Edition<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi"><FONT size=3>VS<o:p></o:p></FONT></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 64"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>Visual Studio<o:p></o:p></FONT></FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 5; mso-yfti-lastrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi"><FONT size=3>VSTO<o:p></o:p></FONT></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-yfti-cnfc: 128"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>Visual Studio Tools for Office<o:p></o:p></FONT></FONT></SPAN></P></TD></TR></TBODY></TABLE>
<H2 style="MARGIN: 10pt 0in 0pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=4><FONT color=#4f81bd><FONT face=Cambria>Overview<o:p></o:p></FONT></FONT></FONT></SPAN></H2>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>VSTO consists of two distinct components with different, but intertwined, shipping patterns, versioning and compatibility concerns. Specifically, we are influenced by all three of the following:<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-FAMILY: Symbol; mso-ansi-language: EN-US; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>Office: we aim to provide support for new versions of Office as quickly as possible preferably in advance of, or simultaneously with, each Office release. We distribute our runtime components as a redistributable package through the Microsoft public download site (in addition to chaining into VS for developer use).<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-FAMILY: Symbol; mso-ansi-language: EN-US; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>VS: all our design-time components including designers, code generators, build integration and deployment/publishing are hosted inside VS.<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN lang=EN-US style="FONT-FAMILY: Symbol; mso-ansi-language: EN-US; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>.NET Framework/Common Language Runtime: we aim to allow developers to use new .NET technologies wherever possible, primarily by avoiding any artificial blocks to consumption of new APIs, frameworks or subsets. We also aim to allow developers to target “old” or down-level .NET versions if they so desire through multi-targeting.<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>To a lesser extent we are also influenced by Windows and release updates from time to time to deal with operating system changes and bugs.<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>The following three tables describe the range of Office applications covered by the VSTO design time and the compatibility and versioning details of each major release of the VSTO Runtime. Note that design-time support and runtime support provided by VSTO are not in one-to-one correspondence with one another.<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>That that certain items are internal names of solution types and “bizarre cryptonyms”, for example, and are strictly informal terminology and are in no way to be considered official.<o:p></o:p></FONT></FONT></SPAN></P>
<H2 style="MARGIN: 10pt 0in 0pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=4><FONT color=#4f81bd><FONT face=Cambria>Notes about some terminology<o:p></o:p></FONT></FONT></FONT></SPAN></H2>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=3><FONT face=Calibri>A few terms used in the three tables are explained in detail here:<o:p></o:p></FONT></FONT></SPAN></P>
<TABLE class=MsoTableLightGridAccent3 style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #9BBB59 1.0pt; mso-border-themecolor: accent3; mso-yfti-tbllook: 1024; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-table-layout-alt: fixed" cellSpacing=0 cellPadding=0 border=1 class="MsoTableLightGridAccent3">
<TBODY>
<TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; WIDTH: 1.45in; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top width=139>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Design-time support matrix</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 63pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top width=84>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>“VS version”</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 294.7pt; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top width=393>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>This is the version of VS with which the design-time components shipped; design-time components are always versioned to match VS; the various runtime redistributables will contain a mixture of file and assembly versions since we reship various components from prior runtime versions to support backwards compatibility</FONT></SPAN></P></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P></DIV><SPAN lang=EN-US style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><BR style="PAGE-BREAK-BEFORE: always; mso-break-type: section-break" clear=all></SPAN>
<H2 style="MARGIN: 10pt 0in 0pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=4><FONT color=#4f81bd><FONT face=Cambria>Design-time support matrix<o:p></o:p></FONT></FONT></FONT></SPAN></H2>
<TABLE class=MsoTableLightGridAccent3 style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #9BBB59 1.0pt; mso-border-themecolor: accent3; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" cellSpacing=0 cellPadding=0 border=1 class="MsoTableLightGridAccent3">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-bottom-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Semiofficial name<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Ship vehicle<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">VS version<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Included VSTO Runtime versions<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Office 2003 documents<BR>(solution type)<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Office 2003 add-ins<BR>(solution type)<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Office 2007 documents<BR>(solution type)<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Office 2007 add-ins<BR>(solution type)<o:p></o:p></SPAN></B></P></TD></TR>
<TR style="mso-yfti-irow: 0">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">VSTO 2003<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Add-on for VS 2003</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>7.1</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>1.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>Word<BR>(v7)</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">VSTO 2005<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>VS 2005</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>8.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>2.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>Word<BR>(v8)</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Outlook<BR>(v8)</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">VSTO 2005 SE<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Add-on for VS 2005</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>8.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>2.0 SE</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>Outlook<BR>PowerPoint<BR>Project<BR>Visio<BR>Word<BR>(v8)</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>InfoPath<BR>Outlook<BR>PowerPoint<BR>Project<BR>Visio<BR>Word<BR>(v8)</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3; mso-yfti-lastrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">VSTO 2008<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>VS 2008</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>9.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>2.0 SE Update 2<BR>3.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>Word<BR>(v8)</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>InfoPath<BR>Outlook<BR>PowerPoint<BR>Project<BR>Visio<BR>Word<BR>(v8)</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>Word<BR>(v9)</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Excel<BR>InfoPath<BR>Outlook<BR>PowerPoint<BR>Project<BR>Visio<BR>Word<BR>(v9)</FONT></SPAN></P></TD></TR></TBODY></TABLE>
<H2 style="MARGIN: 10pt 0in 0pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=4><FONT color=#4f81bd><FONT face=Cambria>Solution types<o:p></o:p></FONT></FONT></FONT></SPAN></H2>
<TABLE class=MsoTableLightGridAccent3 style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #9BBB59 1.0pt; mso-border-themecolor: accent3; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" cellSpacing=0 cellPadding=0 border=1 class="MsoTableLightGridAccent3">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-bottom-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Internal name<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Office version<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Description<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Minimum required .NET Framework version<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">User-facing assembly names<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Underlying technologies<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Versioning , compatibility and other comments<o:p></o:p></SPAN></B></P></TD></TR>
<TR style="mso-yfti-irow: 0">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">v7<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>2003</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><FONT face=Calibri><I style="mso-bidi-font-style: normal"><SPAN lang=EN-US>Office</SPAN></I><SPAN lang=EN-US> templates in VS 2003 add-on</SPAN></FONT></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>FX 1.1</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Microsoft.Office.Tools.Common<BR>Microsoft.Office.Tools.Excel<BR>Microsoft.Office.Tools.Word<BR>Microsoft.VisualStudio.Tools.Applications.Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Fusion binding<BR>.NET CAS</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Fusion determines version of user-facing assemblies to run based on assembly manifest versions etc.</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">v8<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>2003</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><I style="mso-bidi-font-style: normal"><SPAN lang=EN-US><FONT face=Calibri>Office</FONT></SPAN></I><SPAN lang=EN-US><FONT face=Calibri> templates in VS 2005<BR><I style="mso-bidi-font-style: normal">Office</I> templates in VS 2005 add-on<BR><I style="mso-bidi-font-style: normal">Office 2003</I> templates in VS 2008</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>FX 2.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Microsoft.Office.Tools.Common<BR>Microsoft.Office.Tools.Excel<BR>Microsoft.Office.Tools.Outlook<BR>Microsoft.Office.Tools.Word<BR>Microsoft.VisualStudio.Tools.Applications.Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Fusion binding<BR>.NET CAS</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Fusion determines version of user-facing assemblies to run based on assembly manifest versions etc.</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2; mso-yfti-lastrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">v9<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>2007</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><FONT face=Calibri><I style="mso-bidi-font-style: normal"><SPAN lang=EN-US>Office 2007</SPAN></I><SPAN lang=EN-US> templates in VS 2008</SPAN></FONT></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>FX 3.5</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Microsoft.Office.Tools.v9.0<BR>Microsoft.Office.Tools.Common.v9.0<BR>Microsoft.Office.Tools.Excel.v9.0<BR>Microsoft.Office.Tools.Outlook.v9.0<BR>Microsoft.Office.Tools.Word.v9.0<BR>Microsoft.VisualStudio.Tools.Applications.Runtime.v9.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>MAF binding<BR>ClickOnce security</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>MAF always loads the latest version of any given assembly regardless of assembly manifest versions, thus new versions of user-facing assemblies must always have unique names (hence the “v9.0”-style assembly name decorations)</FONT></SPAN></P></TD></TR></TBODY></TABLE><SPAN lang=EN-US style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><BR style="PAGE-BREAK-BEFORE: always; mso-special-character: line-break" clear=all></SPAN>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P>
<H2 style="MARGIN: 10pt 0in 0pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><FONT size=4><FONT color=#4f81bd><FONT face=Cambria>Runtime support matrix<o:p></o:p></FONT></FONT></FONT></SPAN></H2>
<TABLE class=MsoTableLightGridAccent3 style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #9BBB59 1.0pt; mso-border-themecolor: accent3; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" cellSpacing=0 cellPadding=0 border=1 class="MsoTableLightGridAccent3">
<TBODY>
<TR style="mso-yfti-irow: -1; mso-yfti-firstrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-bottom-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 5"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Internal name<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Semiofficial name<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Bizarre cryptonym<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Ship vehicle<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Supported solution types<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Target .NET Framework version<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #9bbb59 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 2.25pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 1"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">Comment<o:p></o:p></SPAN></B></P></TD></TR>
<TR style="mso-yfti-irow: 0">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">1.0<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>VSTO 2003 Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>OTKLoadr</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Office 2003</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>v7</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>FX 1.1</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Included as integral part of Office since Office 2003</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 1">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">2.0<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>VSTO 2005 Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Whidbey</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>VS 2005<BR>Download</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>v8</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>FX 2.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Improved API support and designers plus Outlook add-ins</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 2">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">2.0 SE<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>VSTO 2005 SE Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Cypress</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Download</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>v8</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>FX 2.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Update to include add-in support for Office 2003/2007 and bug fixes</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 3">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">2.0 SE Update 1<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>VSTO 2005 SE Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Cypress</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Download</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><o:p><FONT face=Calibri>&nbsp;</FONT></o:p></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>FX 2.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Vista compatibility and bug fixes</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 4">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">2.0 SE Update 2<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>VSTO 2005 SE Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Cypress</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>VS 2008<BR>Download</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>v8</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>FX 2.0</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Bug fixes</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 5">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 132"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">3.0<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>VSTO 3.0 Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Orcas</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>VS 2008<BR>Download</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>v9</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>FX 3.5</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; BACKGROUND-COLOR: transparent; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 128"><SPAN lang=EN-US><FONT face=Calibri>Full support for Office 2007 solutions and ClickOnce deployment</FONT></SPAN></P></TD></TR>
<TR style="mso-yfti-irow: 6; mso-yfti-lastrow: yes">
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #9bbb59 1pt solid; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 68"><B><SPAN lang=EN-US style="FONT-FAMILY: 'Cambria','serif'; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: major-fareast; mso-hansi-theme-font: major-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: major-bidi">3.0 SP1<o:p></o:p></SPAN></B></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>VSTO 3.0 SP1 Runtime</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>Orcas SP1</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>VS 2008 SP1<BR>Download</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>v9</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>FX 3.5</FONT></SPAN></P></TD>
<TD class="" style="BORDER-RIGHT: #9bbb59 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e6eed5; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; PADDING-TOP: 0in; BORDER-BOTTOM: #9bbb59 1pt solid; mso-border-bottom-themecolor: accent3; mso-border-top-themecolor: accent3; mso-border-right-themecolor: accent3; mso-border-left-alt: solid #9BBB59 1.0pt; mso-border-left-themecolor: accent3; mso-border-top-alt: solid #9BBB59 1.0pt; mso-background-themecolor: accent3; mso-background-themetint: 63" vAlign=top>
<P class=SmallTableText style="MARGIN: 0in 0in 0pt; mso-yfti-cnfc: 64"><SPAN lang=EN-US><FONT face=Calibri>.NET Framework 3.5 Client Profile update, bug fixes and minor features</FONT></SPAN></P></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><SPAN lang=EN-US style="mso-ansi-language: EN-US"><o:p><FONT face=Calibri size=3>&nbsp;</FONT></o:p></SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>What have I been up to?</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/what-have-i-been-up-to</link>
      <pubDate>Thu, 29 Jan 2009 15:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2009/01/29/what-have-i-been-up-to/</guid>
      <description><![CDATA[Well, first of all I started as a part-time graduate student at the University of Washington in the...]]></description>
      <content:encoded><![CDATA[<P>Well, first of all I started as a part-time graduate student at the University of Washington in the <A class="" href="https://pmp.cs.washington.edu/" mce_href="https://pmp.cs.washington.edu/">Professional Master's Program</A>&nbsp;in computer science and engineering. This is very exciting and I'm learning a lot of interesting things particularly in the areas of <A class="" href="https://www.cs.washington.edu/education/courses/csep505/" mce_href="https://www.cs.washington.edu/education/courses/csep505/">functional programming languages</A> (as you may have figured given my previous references to F# and OCaml) and <A class="" href="https://www.cs.washington.edu/education/courses/csep531/" mce_href="https://www.cs.washington.edu/education/courses/csep531/">complexity theory</A>. I've also signed up for <A class="" href="https://seattle2.startupweekend.com/" mce_href="https://seattle2.startupweekend.com/">Seattle Startup Weekend 2</A>&nbsp;which I should definitely plug since <A class="" href="https://www.microsoft.com/" mce_href="https://www.microsoft.com/">Microsoft</A> is the national sponsor. That's next weekend and I'm really looking forward to it.</P>
<P>What else? Well, in parallel with this, my MSDN blog, I've also started working on my <A class="" href="https://www.opiumtrail.com/" mce_href="https://www.opiumtrail.com/">personal blog</A>. This I decided to keep separate since the main subject of my posts on this site, while still primarily of a technical nature, mainly revolve around the interesting challenges associated with writing the actual <EM>blog</EM> code from scratch. So there.</P>
<P>Anyway, I do plan to post here more often soon.</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>OCaml and F#</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/ocaml-and-f</link>
      <pubDate>Mon, 01 Dec 2008 23:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2008/12/01/ocaml-and-f/</guid>
      <description><![CDATA[So, I decided that Objective-C is not that interesting for the time being. I thought I'd play with...]]></description>
      <content:encoded><![CDATA[So, I decided that Objective-C is not that interesting for the time being. I thought I'd play with <A href="https://research.microsoft.com/fsharp/" target=_blank mce_href="https://research.microsoft.com/fsharp/">F#</A> instead. More on this later…]]></content:encoded>
    </item>
    <item>
      <title>Languages: Objective-C this time</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/languages-objective-c-this-time</link>
      <pubDate>Wed, 19 Nov 2008 04:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2008/11/19/languages-objective-c-this-time/</guid>
      <description><![CDATA[I switched on my Mac for the first time in about three months this evening. I had a hankering to...]]></description>
      <content:encoded><![CDATA[<p>
I switched on my Mac for the first time in about three months this evening. I had a hankering to do some Objective-C. This is a language I've tried to master before but without huge amounts of success. However, with my renewed interest in late binding and dynamic languages, I think it's time to start looking again. And this time it's absolutely going to happen. Before I switched on the Mac I tried the <a href="https://users.telenet.be/stes/compiler.html" target="_blank" mce_href="https://users.telenet.be/stes/compiler.html">Portable Object Compiler</a> and <a href="https://www.mingw.org/" target="_blank" mce_href="https://www.mingw.org/">MinGW</a> port of GCC on my Windows box but couldn't get either of them to compile my sources without the compiler crashing due to segmentation faults (caused by exception handling, I believe). Not cool. Anyway, I'm back in Mac land and having fun.
</p>
]]></content:encoded>
    </item>
    <item>
      <title>Multimethods in C# revisited</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/multimethods-in-c-revisited</link>
      <pubDate>Wed, 12 Nov 2008 01:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2008/11/12/multimethods-in-c-revisited/</guid>
      <description><![CDATA[So I thought long and hard about my initial stab at a multimethod implementation for C#. It was a...]]></description>
      <content:encoded><![CDATA[<P>So I thought long and hard about my initial stab at a multimethod implementation for C#. It was a reasonable proof of concept. However, I read some more on the subject of multiple dispatch and the visitor pattern and came up with a few additional ideas. These are encapsulated in the attached project. I have also reproduced the <A href="https://blogs.msdn.com/rcook/pages/multimethods-in-c-revisited-multimethodfactory-cs.aspx" target=_blank mce_href="https://blogs.msdn.com/rcook/pages/multimethods-in-c-revisited-multimethodfactory-cs.aspx">main source file</A> since this is where most of the action takes place.</P>
<P>This was, for me, an interesting digression into the area of IL generation using <TT>System.Reflection.Emit</TT> which is something I haven't done since my old <A href="https://www.microsoft.com/speech/" target=_blank mce_href="https://www.microsoft.com/speech/">Speech Server</A> days.</P>
<P>Here's a summary of what I ended up doing:</P>
<UL>
<LI>The <A href="https://blogs.msdn.com/rcook/pages/multimethods-in-c-revisited-multimethodfactory-cs.aspx" target=_blank mce_href="https://blogs.msdn.com/rcook/pages/multimethods-in-c-revisited-multimethodfactory-cs.aspx">multimethod factory</A> generates a dynamic assembly on the fly. This assembly contains an automatically generated holder class encapsulating the delegate corresponding to each runtime overload of the multimethod plus a private invoker method for each overload. A central invoker method uses <TT>System.Type.InvokeMember</TT> to perform runtime method resolution while the private invokers perform marshalling and unmarshalling of arguments in and out of the runtime overload.</LI>
<LI>This implementation supports by-reference arguments such as <TT>ref</TT> and <TT>out</TT> parameters along with <TT>in</TT> parameters as well as return values, so it offers something much closer to a complete solution than my initial implementation.</LI>
<LI>The <TT>DebugInfo</TT> configuration class can be used to force the code generation phase to generate on-disc assemblies, symbols and pseudo-code which is provided to aid debugging of the generated IL: the code generation is somewhat fragile and it's very easy to leave the code generating "invalid program" errors when it gets JITted.</LI>
<LI>The on-disc assemblies can also be referenced in other solutions in order to use the generated multimethod without the overhead of the code/assembly generation phase.</LI></UL>
<P>For future investigation:</P>
<UL>
<LI>It would be nice to eliminate the reflection. As discussed at the recent <A href="https://channel9.msdn.com/pdc2008/TL16/" target=_blank mce_href="https://channel9.msdn.com/pdc2008/TL16/">PDC</A>, there is a new planned <TT>dynamic</TT> pseudo-type in C# 4.0 which will allow for late-bound method calls. This is designed to improve COM interoperability but could just as well be applied to the problem of multiple dispatch. It would likely simplify a great deal of the IL that my multimethod factory has to generate.</LI>
<LI>Currently, the delegate types used to construct the multimethod have to be declared <TT>public</TT> since the dynamic assembly that implements the multimethod holder needs to be able to access these types at runtime. I would like to be able to remove this limitation in order to improve encapsulation.</LI>
<LI>I'm sure I could use abstract syntax trees and DLR-type on-the-fly code generation to do much of what can be done here. However, to remain compatible with .NET Framework 3.5 I'll be sticking with my reflection-based implementation for the time being!</LI></UL>
<P>Until next time…</P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/09/06/14/41/MultipleDispatchRevisited.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-06-14-41/MultipleDispatchRevisited.zip">MultipleDispatchRevisited.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Multimethods in C# revisited - MultimethodFactory.cs</title>
      <link>https://docs.microsoft.com/archive/blogs/rcook/multimethods-in-c-revisited-multimethodfactory-cs</link>
      <pubDate>Wed, 12 Nov 2008 01:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Richard Cook - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://qa.msdn.wdslab.com/rcook/2008/11/12/multimethods-in-c-revisited-multimethodfactory-cs/</guid>
      <description><![CDATA[/// &lt;summary&gt;
/// Generates multimethods corresponding to the specified method...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">///</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;summary&gt;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">///</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Generates multimethods corresponding to the specified method signature.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">///</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/summary&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">///</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;typeparam name="T"&gt;</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Type of delegate specifying method signature</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;/typeparam&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">public</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: blue">sealed</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">MultimethodFactory</SPAN>&lt;T&gt; <SPAN style="COLOR: blue">where</SPAN> T : <SPAN style="COLOR: blue">class<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">Constants<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">string</SPAN> InvokeMethodName = <SPAN style="COLOR: #a31515">"Invoke"</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">string</SPAN> SpecificInvokeMethodName = <SPAN style="COLOR: #a31515">"__Invoke"</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">const</SPAN> <SPAN style="COLOR: blue">string</SPAN> CreateDelegateMethodName = <SPAN style="COLOR: #a31515">"CreateDelegate"</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">sealed</SPAN> <SPAN style="COLOR: blue">class</SPAN> <SPAN style="COLOR: #2b91af">FieldData<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">readonly</SPAN> FieldBuilder _fieldBuilder;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">readonly</SPAN> <SPAN style="COLOR: blue">object</SPAN> _value;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">internal</SPAN> FieldBuilder FieldBuilder<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">get<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> _fieldBuilder;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">internal</SPAN> <SPAN style="COLOR: blue">object</SPAN> Value<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">get<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> _value;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">internal</SPAN> FieldData(FieldBuilder fieldBuilder, <SPAN style="COLOR: blue">object</SPAN> value)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != fieldBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != value);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_fieldBuilder = fieldBuilder;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_value = value;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">readonly</SPAN> InvocationData _invocationData;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">readonly</SPAN> List&lt;<SPAN style="COLOR: blue">object</SPAN>&gt; _delegates = <SPAN style="COLOR: blue">new</SPAN> List&lt;<SPAN style="COLOR: blue">object</SPAN>&gt;();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Type initializer.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">static</SPAN> MultimethodFactory()<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (!<SPAN style="COLOR: blue">typeof</SPAN>(T).IsPublic || !InvocationData.TryCreate(<SPAN style="COLOR: blue">typeof</SPAN>(T), <SPAN style="COLOR: blue">out</SPAN> _invocationData))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> ArgumentException(<SPAN style="COLOR: blue">string</SPAN>.Format(Properties.Resources.ArgumentExceptionMustBeValidPublicDelegateType, <SPAN style="COLOR: blue">typeof</SPAN>(T).FullName), <SPAN style="COLOR: #a31515">"T"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Creates a new multimethod factory instance.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> MultimethodFactory()<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Implements a runtime overload of the multimethod.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;typeparam name="U"&gt;</SPAN><SPAN style="COLOR: green">Type of delegate specifying method signature</SPAN><SPAN style="COLOR: gray">&lt;/typeparam&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;param name="delegate"&gt;</SPAN><SPAN style="COLOR: green">Delegate</SPAN><SPAN style="COLOR: gray">&lt;/param&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> Implement&lt;U&gt;(U @delegate) <SPAN style="COLOR: blue">where</SPAN> U : <SPAN style="COLOR: blue">class<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>InvocationData invocationData;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (!<SPAN style="COLOR: blue">typeof</SPAN>(U).IsPublic || !InvocationData.TryCreate(<SPAN style="COLOR: blue">typeof</SPAN>(U), <SPAN style="COLOR: blue">out</SPAN> invocationData))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> ArgumentException(<SPAN style="COLOR: blue">string</SPAN>.Format(Properties.Resources.ArgumentExceptionMustBeValidPublicDelegateType, <SPAN style="COLOR: blue">typeof</SPAN>(U).FullName), <SPAN style="COLOR: #a31515">"U"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == @delegate)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> ArgumentNullException(Properties.Resources.ArgumentNullExceptionDelegate, <SPAN style="COLOR: #a31515">"delegate"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">typeof</SPAN>(U).Equals(@delegate.GetType()));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (!_invocationData.IsCompatibleWith(invocationData))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> ArgumentException(<SPAN style="COLOR: blue">string</SPAN>.Format(Properties.Resources.ArgumentExceptionDelegateTypeIsIncompatible, <SPAN style="COLOR: blue">typeof</SPAN>(U).FullName, <SPAN style="COLOR: blue">typeof</SPAN>(T).FullName), <SPAN style="COLOR: #a31515">"U"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>_delegates.Add(@delegate);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Creates a multimethod instance.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;returns&gt;</SPAN><SPAN style="COLOR: green">Multimethod delegate</SPAN><SPAN style="COLOR: gray">&lt;/returns&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> T CreateMultimethod()<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> CreateMultimethod(<SPAN style="COLOR: blue">null</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Creates a multimethod instance.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;/summary&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;param name="debugInfo"&gt;</SPAN><SPAN style="COLOR: green">Debug configuration</SPAN><SPAN style="COLOR: gray">&lt;/param&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray">&lt;returns&gt;</SPAN><SPAN style="COLOR: green">Multimethod delegate</SPAN><SPAN style="COLOR: gray">&lt;/returns&gt;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">public</SPAN> T CreateMultimethod(DebugInfo debugInfo)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (_delegates.Count &lt; 1)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionNoOverloadsDefined);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>AssemblyBuilder assemblyBuilder = CreateAssemblyBuilder(debugInfo);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ModuleBuilder moduleBuilder = CreateModuleBuilder(debugInfo, assemblyBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>FieldData[] fields;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Type holderType = CreateHolderClass(debugInfo, moduleBuilder, _delegates.ToArray(), _invocationData, <SPAN style="COLOR: blue">out</SPAN> fields);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>SaveArtifacts(debugInfo, assemblyBuilder, moduleBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">object</SPAN> holder = CreateHolderInstance(holderType, fields);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodInfo createDelegateMethod = holderType.GetMethod(Constants.CreateDelegateMethodName, BindingFlags.Public | BindingFlags.Instance, <SPAN style="COLOR: blue">null</SPAN>, Type.EmptyTypes, <SPAN style="COLOR: blue">null</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;</SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == createDelegateMethod)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> (T)createDelegateMethod.Invoke(holder, <SPAN style="COLOR: blue">null</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> SaveArtifacts(DebugInfo debugInfo, AssemblyBuilder assemblyBuilder, ModuleBuilder moduleBuilder)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != assemblyBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != moduleBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == debugInfo)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="COLOR: green">// Copy the assembly to the output path.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">string</SPAN> fileName = Path.GetFileName(debugInfo.AssemblyPath);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>assemblyBuilder.Save(fileName);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>File.Move(fileName, debugInfo.AssemblyPath);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Copy the module to the output path.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</SPAN>File.Move(moduleBuilder.FullyQualifiedName, debugInfo.ModulePath);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Copy the source to the output path.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">string</SPAN> symbolSourcePath = Path.ChangeExtension(moduleBuilder.FullyQualifiedName, <SPAN style="COLOR: #a31515">".pdb"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">string</SPAN> symbolTargetPath = Path.ChangeExtension(debugInfo.ModulePath, <SPAN style="COLOR: #a31515">".pdb"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>File.Move(symbolSourcePath, symbolTargetPath);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> AssemblyBuilder CreateAssemblyBuilder(DebugInfo debugInfo)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>AssemblyName assemblyName = <SPAN style="COLOR: blue">new</SPAN> AssemblyName(<SPAN style="COLOR: blue">null</SPAN> == debugInfo ? <SPAN style="COLOR: #a31515">"ANONYMOUS"</SPAN> : Path.GetFileName(debugInfo.AssemblyPath));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ConstructorInfo attributeConstructor = <SPAN style="COLOR: blue">typeof</SPAN>(SecurityTransparentAttribute).GetConstructor(Type.EmptyTypes);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == attributeConstructor)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave, <SPAN style="COLOR: blue">new</SPAN> CustomAttributeBuilder[] { <SPAN style="COLOR: blue">new</SPAN> CustomAttributeBuilder(attributeConstructor, <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[0]) });<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>attributeConstructor = <SPAN style="COLOR: blue">typeof</SPAN>(DebuggableAttribute).GetConstructor(<SPAN style="COLOR: blue">new</SPAN> Type[] { <SPAN style="COLOR: blue">typeof</SPAN>(DebuggableAttribute.DebuggingModes) });<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>assemblyBuilder.SetCustomAttribute(<SPAN style="COLOR: blue">new</SPAN> CustomAttributeBuilder(attributeConstructor, <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[] { DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.Default }));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> assemblyBuilder;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> ModuleBuilder CreateModuleBuilder(DebugInfo debugInfo, AssemblyBuilder assemblyBuilder)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != assemblyBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == debugInfo)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> assemblyBuilder.DefineDynamicModule(<SPAN style="COLOR: #a31515">"ANONYMOUS"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> assemblyBuilder.DefineDynamicModule(debugInfo.ModulePath, Path.GetFileName(debugInfo.ModulePath), <SPAN style="COLOR: blue">true</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> Type CreateHolderClass(DebugInfo debugInfo, ModuleBuilder moduleBuilder, <SPAN style="COLOR: blue">object</SPAN>[] delegates, InvocationData invocationData, <SPAN style="COLOR: blue">out</SPAN> FieldData[] fields)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != moduleBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != delegates &amp;&amp; delegates.Length &gt; 0);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != invocationData);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">bool</SPAN> isDebuggable = <SPAN style="COLOR: blue">null</SPAN> != debugInfo;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">string</SPAN> sourceFileName = isDebuggable ? debugInfo.SourcePath : <SPAN style="COLOR: blue">null</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">using</SPAN> (SourceWriter sourceWriter = <SPAN style="COLOR: blue">new</SPAN> SourceWriter(isDebuggable, sourceFileName, moduleBuilder))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>TypeBuilder typeBuilder = moduleBuilder.DefineType(ILHelpers.GenerateUniqueName(<SPAN style="COLOR: #a31515">"MultimethodHolderClass"</SPAN>), TypeAttributes.Public | TypeAttributes.Class);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>fields = <SPAN style="COLOR: blue">new</SPAN> FieldData[delegates.Length];<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; fields.Length; ++i)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Create runtime overload of "__Invoke" and save the field name for later use.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">object</SPAN> @delegate = delegates[i];<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>FieldBuilder fieldBuilder = GenerateSpecificInvokeMethod(sourceWriter, typeBuilder, @delegate.GetType());<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>fields[i] = <SPAN style="COLOR: blue">new</SPAN> FieldData(fieldBuilder, @delegate);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>GenerateConstructor(sourceWriter, typeBuilder, fields);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Generate public "Invoke" method.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodBuilder publicInvokeMethod = GenerateInvokeMethod(sourceWriter, typeBuilder, invocationData);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Create delegate creator method.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>GenerateCreateDelegateMethod(sourceWriter, typeBuilder, <SPAN style="COLOR: blue">typeof</SPAN>(T), publicInvokeMethod);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: green">// Instantiate generated multimethod holder class.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> typeBuilder.CreateType();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">object</SPAN> CreateHolderInstance(Type holderType, FieldData[] fields)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != holderType);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != fields &amp;&amp; fields.Length &gt; 0);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">object</SPAN>[] args = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: blue">object</SPAN>[fields.Length];<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; args.Length; ++i)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>args[i] = fields[i].Value;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> Activator.CreateInstance(holderType, args);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> GenerateConstructor(SourceWriter sourceWriter, TypeBuilder typeBuilder, FieldData[] fields)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != sourceWriter);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != typeBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != fields &amp;&amp; fields.Length &gt; 0);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Create array of delegate types for constructor.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Type[] parameterTypes = <SPAN style="COLOR: blue">new</SPAN> Type[fields.Length];<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; parameterTypes.Length; ++i)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>parameterTypes[i] = fields[i].Value.GetType();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Default constructor for System.Object.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ConstructorInfo objectConstructor = <SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">object</SPAN>).GetConstructor(Type.EmptyTypes);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == objectConstructor)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, parameterTypes);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILGenerator generator = constructorBuilder.GetILGenerator();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitFunctionHeader(<SPAN style="COLOR: #a31515">".ctor"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"PUSH this"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldarg_0); <SPAN style="COLOR: green">// Push "this" onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"CALL System.Object..ctor"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Call, objectConstructor); <SPAN style="COLOR: green">// Invoke System.Object..ctor.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 1; i &lt;= fields.Length; ++i)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"PUSH this"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldarg_0); <SPAN style="COLOR: green">// Push "this" onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"PUSH ARG {0}"</SPAN>, i);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdarg(generator, i);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"STORE FIELD {0}"</SPAN>, fields[i - 1].FieldBuilder.Name);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Stfld, fields[i - 1].FieldBuilder); <SPAN style="COLOR: green">// Store in field.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"RETURN"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ret);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> GenerateCreateDelegateMethod(SourceWriter sourceWriter, TypeBuilder typeBuilder, Type delegateType, MethodBuilder publicInvokeMethod)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != sourceWriter);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != typeBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != delegateType &amp;&amp; <SPAN style="COLOR: blue">typeof</SPAN>(Delegate).IsAssignableFrom(delegateType));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != publicInvokeMethod);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Get delegate's constructor.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ConstructorInfo delegateConstructor = delegateType.GetConstructor(<SPAN style="COLOR: blue">new</SPAN> Type[] { <SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">object</SPAN>), <SPAN style="COLOR: blue">typeof</SPAN>(IntPtr) });<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == delegateConstructor)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Generate delegate factory method.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodBuilder methodBuilder = typeBuilder.DefineMethod(Constants.CreateDelegateMethodName, MethodAttributes.Public, delegateType, Type.EmptyTypes);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILGenerator generator = methodBuilder.GetILGenerator();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitFunctionHeader(Constants.CreateDelegateMethodName);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"DECLARE LOCAL"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.DeclareLocal(delegateType);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"PUSH this"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldarg_0); <SPAN style="COLOR: green">// Push "this" onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"PUSH {0}"</SPAN>, publicInvokeMethod.Name);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldftn, publicInvokeMethod); <SPAN style="COLOR: green">// Push reference to "__Invoke" method onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"CREATE {0}"</SPAN>, delegateType.FullName);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Newobj, delegateConstructor); <SPAN style="COLOR: green">// Create instance of delegate.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"STORE LOCAL"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Stloc_0); <SPAN style="COLOR: green">// Store to local variable.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"PUSH LOCAL"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldloc_0); <SPAN style="COLOR: green">// Push local variable onto stack to return it.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"RETURN"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ret); <SPAN style="COLOR: green">// Return;<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> FieldBuilder GenerateSpecificInvokeMethod(SourceWriter sourceWriter, TypeBuilder typeBuilder, Type delegateType)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != typeBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != sourceWriter);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != delegateType &amp;&amp; <SPAN style="COLOR: blue">typeof</SPAN>(Delegate).IsAssignableFrom(delegateType));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>InvocationData invocationData;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (!InvocationData.TryCreate(delegateType, <SPAN style="COLOR: blue">out</SPAN> invocationData))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Generate a random name for the field.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">string</SPAN> fieldName = ILHelpers.GenerateUniqueName(<SPAN style="COLOR: #a31515">"InvokerDelegate"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Create the private delegate field.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>FieldBuilder fieldBuilder = typeBuilder.DefineField(fieldName, delegateType, FieldAttributes.Private | FieldAttributes.InitOnly);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Generate the "__Invoke" method.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodBuilder methodBuilder = typeBuilder.DefineMethod(<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Constants.SpecificInvokeMethodName,<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodAttributes.Public,<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>invocationData.InvokeMethod.ReturnType,<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>invocationData.GetParameterTypes());<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILGenerator generator = methodBuilder.GetILGenerator();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;</SPAN>sourceWriter.EmitFunctionHeader(<SPAN style="COLOR: blue">string</SPAN>.Format(CultureInfo.InvariantCulture, <SPAN style="COLOR: #a31515">"{0}[{1}]"</SPAN>, Constants.SpecificInvokeMethodName, delegateType.FullName));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"PUSH DELEGATE ONTO STACK"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldarg_0); <SPAN style="COLOR: green">// Push "this".<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldfld, fieldBuilder); <SPAN style="COLOR: green">// Pop this and push field.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"LOAD ARGS"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; invocationData.ParameterCount; ++i)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdarg(generator, i + 1);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"INVOKE DELEGATE"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.EmitCall(OpCodes.Callvirt, invocationData.InvokeMethod, <SPAN style="COLOR: blue">null</SPAN>); <SPAN style="COLOR: green">// Call the "Invoke" method.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"RETURN"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ret); <SPAN style="COLOR: green">// Return.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(0 == <SPAN style="COLOR: blue">string</SPAN>.Compare(fieldName, fieldBuilder.Name, StringComparison.Ordinal));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> fieldBuilder;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">static</SPAN> MethodBuilder GenerateInvokeMethod(SourceWriter sourceWriter, TypeBuilder typeBuilder, InvocationData invocationData)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != sourceWriter);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != typeBuilder);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Assert(<SPAN style="COLOR: blue">null</SPAN> != invocationData);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Create method.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodBuilder methodBuilder = typeBuilder.DefineMethod(<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Constants.InvokeMethodName,<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodAttributes.Private,<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>invocationData.InvokeMethod.ReturnType,<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>invocationData.GetParameterTypes());<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILGenerator generator = methodBuilder.GetILGenerator();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitFunctionHeader(Constants.InvokeMethodName);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Declare local object array.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"DECLARE LOCAL"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.DeclareLocal(<SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">object</SPAN>[]));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Create an array of three objects and assign it to the local variable.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"CREATE LOCAL"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdc_I4(generator, invocationData.ParameterCount);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Newarr, <SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">object</SPAN>)); <SPAN style="COLOR: green">// Create array of objects of size given by value on top of stack (i.e. 3) and push result onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Stloc_0); <SPAN style="COLOR: green">// Store the result (i.e. the newly created array) in the local variable.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Marshal in- and ref-parameters.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; invocationData.ParameterCount; ++i)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ParameterData parameter = invocationData.GetParameter(i);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">switch</SPAN> (parameter.Kind)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">case</SPAN> ParameterKind.In:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"MARSHAL ARG {0} [{1}]"</SPAN>, i, parameter.Kind);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldloc_0); <SPAN style="COLOR: green">// Push local array variable onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>ILHelpers.EmitLdc_I4(generator, i); <SPAN style="COLOR: green">// Push array index onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdarg(generator, i + 1); <SPAN style="COLOR: green">// Push corresponding argument's value onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Stelem_Ref);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">break</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">case</SPAN> ParameterKind.Out:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">break</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">case</SPAN> ParameterKind.Ref:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"MARSHAL ARG {0} [{1}]"</SPAN>, i, parameter.Kind);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldloc_0); <SPAN style="COLOR: green">// Push local array variable onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdc_I4(generator, i); <SPAN style="COLOR: green">// Push array index onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdarg(generator, i + 1); <SPAN style="COLOR: green">// Push corresponding argument's value or address onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldind_Ref); <SPAN style="COLOR: green">// Fetch the value of by-reference values.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Stelem_Ref);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">break</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">default</SPAN>:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Fail(<SPAN style="COLOR: #a31515">"Unexpected"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Invoke this.GetType(). This leaves the Type instance on the stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"CALL GetType"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldarg_0); <SPAN style="COLOR: green">// Push "this" onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodInfo getTypeMethod = <SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">object</SPAN>).GetMethod(<SPAN style="COLOR: #a31515">"GetType"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == getTypeMethod)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.EmitCall(OpCodes.Call, getTypeMethod, <SPAN style="COLOR: blue">null</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Invoke this.GetType().InvokeMember(Constants.PrivateInvokeMethodName, BindingFlags, null, target, args). This leaves the return value on the stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"CALL InvokeMember"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldstr, Constants.SpecificInvokeMethodName);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldc_I4, (<SPAN style="COLOR: blue">int</SPAN>)(BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod));<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldnull);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldarg_0); <SPAN style="COLOR: green">// Push "this" onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldloc_0); <SPAN style="COLOR: green">// Push local array variable onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MethodInfo invokeMemberMethod = <SPAN style="COLOR: blue">typeof</SPAN>(Type).GetMethod(<SPAN style="COLOR: #a31515">"InvokeMember"</SPAN>, BindingFlags.Instance | BindingFlags.Public, <SPAN style="COLOR: blue">null</SPAN>, <SPAN style="COLOR: blue">new</SPAN> Type[] { <SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">string</SPAN>), <SPAN style="COLOR: blue">typeof</SPAN>(BindingFlags), <SPAN style="COLOR: blue">typeof</SPAN>(Binder), <SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">object</SPAN>), <SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">object</SPAN>[]) }, <SPAN style="COLOR: blue">null</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">null</SPAN> == invokeMemberMethod)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.EmitCall(OpCodes.Callvirt, invokeMemberMethod, <SPAN style="COLOR: blue">null</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Unmarshal ref- and out-parameters.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">for</SPAN> (<SPAN style="COLOR: blue">int</SPAN> i = 0; i &lt; invocationData.ParameterCount; ++i)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ParameterData parameter = invocationData.GetParameter(i);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">switch</SPAN> (parameter.Kind)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">case</SPAN> ParameterKind.In:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">break</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">case</SPAN> ParameterKind.Out:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">case</SPAN> ParameterKind.Ref:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"UNMARSHAL ARG {0} [{1}]"</SPAN>, i, parameter.Kind);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdarg(generator, i + 1); <SPAN style="COLOR: green">// Push argument 2's address onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldloc_0); <SPAN style="COLOR: green">// Push local array variable onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ILHelpers.EmitLdc_I4(generator, i); <SPAN style="COLOR: green">// Push array index 1 onto stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ldelem_Ref); <SPAN style="COLOR: green">// Load element from array and pop arguments off stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Stind_Ref); <SPAN style="COLOR: green">// Store elemtn to argument 2.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">break</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">default</SPAN>:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>Debug.Fail(<SPAN style="COLOR: #a31515">"Unexpected"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">throw</SPAN> <SPAN style="COLOR: blue">new</SPAN> InvalidOperationException(Properties.Resources.InvalidOperationExceptionBadCodeGeneration);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Pop return value off stack.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (<SPAN style="COLOR: blue">typeof</SPAN>(<SPAN style="COLOR: blue">void</SPAN>) == invocationData.InvokeMethod.ReturnType)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Pop);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">// Return.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>sourceWriter.EmitSourceLine(generator, <SPAN style="COLOR: #a31515">"RETURN"</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>generator.Emit(OpCodes.Ret);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> methodBuilder;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><o:p><FONT face=Calibri size=3></FONT></o:p>&nbsp;</P>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/09/06/14/23/MultimethodFactory.cs" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-06-14-23/MultimethodFactory.cs">MultimethodFactory.cs</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>