diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin
index e6cc4e923b..5f925d093e 100755
--- a/AddIns/ICSharpCode.SharpDevelop.addin
+++ b/AddIns/ICSharpCode.SharpDevelop.addin
@@ -850,13 +850,13 @@
 		
 		<ToolbarItem id      = "Compile"
 		             icon    = "Icons.16x16.BuildCombine"
-		             tooltip = "${res:XML.MainMenu.RunMenu.Compile.Description}"
+		             tooltip = "${res:XML.MainMenu.RunMenu.BuildSolution.Description}"
 		             class   = "ICSharpCode.SharpDevelop.Project.Commands.Build"/>
 		
 		<ToolbarItem id      = "BuildProject"
 		             icon    = "Icons.16x16.BuildCurrentSelectedProject"
 		             tooltip = "${res:XML.MainMenu.RunMenu.BuildProject.Description}"
-		             class   = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild"/>
+		             class   = "ICSharpCode.SharpDevelop.Project.Commands.BuildProject"/>
 		
 		<ToolbarItem id = "DebuggerSeparator" type = "Separator"  />
 		
@@ -2074,6 +2074,14 @@
 		             type = "ComboBox"/>
 	</Path>
 	
+	<Path name="/SharpDevelop/Pads/TaskList/TaskContextMenu">
+		<MenuItem id = "Copy"
+		          label = "${res:XML.MainMenu.EditMenu.Copy}"
+		          type = "Item"
+		          icon = "Icons.16x16.CopyIcon"
+		          class = "ICSharpCode.SharpDevelop.Commands.Copy"/>
+	</Path>
+	
 	<Path name="/SharpDevelop/Pads/CommonConsole/ToolBar">
 		<ToolbarItem id = "ClearConsole"
 		             tooltip = "Clear console"
diff --git a/samples/SharpDevelopReports/SampleReports/Customized/EventLog.srd b/samples/SharpDevelopReports/SampleReports/Customized/EventLog.srd
new file mode 100644
index 0000000000..1291491346
--- /dev/null
+++ b/samples/SharpDevelopReports/SampleReports/Customized/EventLog.srd
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReportModel>
+    <ReportSettings>
+        <ReportSettings>
+            <DefaultFont>Microsoft Sans Serif, 10pt</DefaultFont>
+            <DataModel>PushData</DataModel>
+            <RightMargin>50</RightMargin>
+            <UseStandardPrinter>True</UseStandardPrinter>
+            <SortColumnCollection />
+            <AvailableFieldsCollection />
+            <NoDataMessage>No Data for this Report</NoDataMessage>
+            <LeftMargin>50</LeftMargin>
+            <PageSize>827, 1169</PageSize>
+            <Padding>5, 5, 5, 5</Padding>
+            <BottomMargin>50</BottomMargin>
+            <CommandType>Text</CommandType>
+            <ParameterCollection />
+            <Landscape>False</Landscape>
+            <ReportName>Customized</ReportName>
+            <TopMargin>50</TopMargin>
+            <GroupColumnsCollection />
+            <GraphicsUnit>Pixel</GraphicsUnit>
+            <CommandText />
+            <ReportType>DataReport</ReportType>
+            <ConnectionString />
+        </ReportSettings>
+    </ReportSettings>
+    <SectionCollection>
+        <BaseSection>
+            <Size>727, 91</Size>
+            <Name>ReportHeader</Name>
+            <PageBreakAfter>False</PageBreakAfter>
+            <SectionMargin>0</SectionMargin>
+            <SectionOffset>0</SectionOffset>
+            <BackColor>White</BackColor>
+            <Items>
+                <BaseImageItem>
+                    <ImageSource>File</ImageSource>
+                    <Location>83, 13</Location>
+                    <Name>BaseImageItem2</Name>
+                    <Size>568, 36</Size>
+                    <ScaleImageToSize>False</ScaleImageToSize>
+                    <BackColor>White</BackColor>
+                    <RelativeFileName>..\Logos\Bannerbeige2.gif</RelativeFileName>
+                    <ImageFileName>D:\SharpDevelop3.0_WorkingCopy\SharpDevelop\samples\SharpDevelopReports\SampleReports\Logos\Bannerbeige2.gif</ImageFileName>
+                </BaseImageItem>
+                <BaseTextItem>
+                    <BackColor>Silver</BackColor>
+                    <CanShrink>False</CanShrink>
+                    <StringTrimming>None</StringTrimming>
+                    <Text>System - Eventlog</Text>
+                    <Location>83, 55</Location>
+                    <ContentAlignment>TopCenter</ContentAlignment>
+                    <Visible>True</Visible>
+                    <DrawBorder>False</DrawBorder>
+                    <Font>Microsoft Sans Serif, 15pt</Font>
+                    <CanGrow>False</CanGrow>
+                    <FormatString />
+                    <Name>BaseTextItem2147483643</Name>
+                    <FrameColor>White</FrameColor>
+                    <Size>568, 33</Size>
+                    <ForeColor>ControlText</ForeColor>
+                </BaseTextItem>
+            </Items>
+            <Location>50, 50</Location>
+            <DrawBorder>False</DrawBorder>
+        </BaseSection>
+        <BaseSection>
+            <Size>727, 60</Size>
+            <Name>ReportPageHeader</Name>
+            <PageBreakAfter>False</PageBreakAfter>
+            <SectionMargin>0</SectionMargin>
+            <SectionOffset>0</SectionOffset>
+            <BackColor>White</BackColor>
+            <Items>
+                <BaseRowItem>
+                    <Location>12, 3</Location>
+                    <AlternateBackColor />
+                    <Name>BaseRowItem2</Name>
+                    <Items>
+                        <BaseTextItem>
+                            <BackColor>White</BackColor>
+                            <CanShrink>False</CanShrink>
+                            <StringTrimming>None</StringTrimming>
+                            <Text>Image</Text>
+                            <Location>20, 7</Location>
+                            <ContentAlignment>TopCenter</ContentAlignment>
+                            <Visible>True</Visible>
+                            <DrawBorder>False</DrawBorder>
+                            <Font>Microsoft Sans Serif, 12pt</Font>
+                            <CanGrow>False</CanGrow>
+                            <FormatString />
+                            <Name>BaseTextItem2147483642</Name>
+                            <FrameColor>White</FrameColor>
+                            <Size>100, 20</Size>
+                            <ForeColor>ControlText</ForeColor>
+                        </BaseTextItem>
+                        <BaseTextItem>
+                            <BackColor>White</BackColor>
+                            <CanShrink>False</CanShrink>
+                            <StringTrimming>None</StringTrimming>
+                            <Text>EntryType</Text>
+                            <Location>135, 7</Location>
+                            <ContentAlignment>TopCenter</ContentAlignment>
+                            <Visible>True</Visible>
+                            <DrawBorder>False</DrawBorder>
+                            <Font>Microsoft Sans Serif, 12pt</Font>
+                            <CanGrow>False</CanGrow>
+                            <FormatString />
+                            <Name>BaseTextItem2147483644</Name>
+                            <FrameColor>White</FrameColor>
+                            <Size>100, 20</Size>
+                            <ForeColor>ControlText</ForeColor>
+                        </BaseTextItem>
+                        <BaseTextItem>
+                            <BackColor>White</BackColor>
+                            <CanShrink>False</CanShrink>
+                            <StringTrimming>None</StringTrimming>
+                            <Text>DateWritten</Text>
+                            <Location>261, 7</Location>
+                            <ContentAlignment>TopCenter</ContentAlignment>
+                            <Visible>True</Visible>
+                            <DrawBorder>False</DrawBorder>
+                            <Font>Microsoft Sans Serif, 12pt</Font>
+                            <CanGrow>False</CanGrow>
+                            <FormatString />
+                            <Name>BaseTextItem2147483645</Name>
+                            <FrameColor>White</FrameColor>
+                            <Size>100, 20</Size>
+                            <ForeColor>ControlText</ForeColor>
+                        </BaseTextItem>
+                        <BaseTextItem>
+                            <BackColor>White</BackColor>
+                            <CanShrink>False</CanShrink>
+                            <StringTrimming>None</StringTrimming>
+                            <Text>Message</Text>
+                            <Location>391, 7</Location>
+                            <ContentAlignment>TopLeft</ContentAlignment>
+                            <Visible>True</Visible>
+                            <DrawBorder>False</DrawBorder>
+                            <Font>Microsoft Sans Serif, 12pt</Font>
+                            <CanGrow>False</CanGrow>
+                            <FormatString />
+                            <Name>BaseTextItem2147483646</Name>
+                            <FrameColor>White</FrameColor>
+                            <Size>248, 20</Size>
+                            <ForeColor>ControlText</ForeColor>
+                        </BaseTextItem>
+                    </Items>
+                    <DrawBorder>False</DrawBorder>
+                    <ChangeBackColorEveryNRow>0</ChangeBackColorEveryNRow>
+                    <FrameColor>White</FrameColor>
+                    <Size>697, 44</Size>
+                    <BackColor>White</BackColor>
+                    <Visible>True</Visible>
+                    <ForeColor>Black</ForeColor>
+                </BaseRowItem>
+            </Items>
+            <Location>50, 156</Location>
+            <DrawBorder>False</DrawBorder>
+        </BaseSection>
+        <BaseSection>
+            <Size>727, 90</Size>
+            <Name>ReportDetail</Name>
+            <PageBreakAfter>False</PageBreakAfter>
+            <SectionMargin>0</SectionMargin>
+            <SectionOffset>0</SectionOffset>
+            <BackColor>White</BackColor>
+            <Items>
+                <BaseRowItem>
+                    <Location>12, 14</Location>
+                    <AlternateBackColor />
+                    <Name>BaseRowItem1</Name>
+                    <Items>
+                        <BaseImageItem>
+                            <ImageSource>Database</ImageSource>
+                            <Location>20, 7</Location>
+                            <Name>BaseImageItem1</Name>
+                            <Size>30, 30</Size>
+                            <ScaleImageToSize>False</ScaleImageToSize>
+                            <BackColor>White</BackColor>
+                            <ColumnName>Image</ColumnName>
+                        </BaseImageItem>
+                        <BaseDataItem>
+                            <Text>EntryType</Text>
+                            <Font>Microsoft Sans Serif, 8.25pt</Font>
+                            <Location>135, 7</Location>
+                            <CanGrow>False</CanGrow>
+                            <ForeColor>Black</ForeColor>
+                            <StringTrimming>None</StringTrimming>
+                            <ColumnName>EntryType</ColumnName>
+                            <DrawBorder>False</DrawBorder>
+                            <CanShrink>False</CanShrink>
+                            <ContentAlignment>TopLeft</ContentAlignment>
+                            <BackColor>White</BackColor>
+                            <FormatString />
+                            <Name>EntryType</Name>
+                            <Visible>True</Visible>
+                            <Size>100, 20</Size>
+                            <FrameColor>White</FrameColor>
+                        </BaseDataItem>
+                        <BaseDataItem>
+                            <Text>Message</Text>
+                            <Font>Microsoft Sans Serif, 8.25pt</Font>
+                            <Location>391, 7</Location>
+                            <CanGrow>False</CanGrow>
+                            <ForeColor>Black</ForeColor>
+                            <StringTrimming>None</StringTrimming>
+                            <ColumnName>Message</ColumnName>
+                            <DrawBorder>False</DrawBorder>
+                            <CanShrink>False</CanShrink>
+                            <ContentAlignment>TopLeft</ContentAlignment>
+                            <BackColor>White</BackColor>
+                            <FormatString />
+                            <Name>Message</Name>
+                            <Visible>True</Visible>
+                            <Size>248, 20</Size>
+                            <FrameColor>White</FrameColor>
+                        </BaseDataItem>
+                        <BaseDataItem>
+                            <Text>TimeWritten</Text>
+                            <Font>Microsoft Sans Serif, 10pt</Font>
+                            <Location>261, 7</Location>
+                            <CanGrow>False</CanGrow>
+                            <ForeColor>Black</ForeColor>
+                            <StringTrimming>None</StringTrimming>
+                            <ColumnName>TimeWritten</ColumnName>
+                            <DrawBorder>False</DrawBorder>
+                            <CanShrink>False</CanShrink>
+                            <ContentAlignment>TopLeft</ContentAlignment>
+                            <BackColor>White</BackColor>
+                            <FormatString />
+                            <Name>BaseDataItem1</Name>
+                            <Visible>True</Visible>
+                            <Size>100, 20</Size>
+                            <FrameColor>White</FrameColor>
+                        </BaseDataItem>
+                    </Items>
+                    <DrawBorder>False</DrawBorder>
+                    <ChangeBackColorEveryNRow>0</ChangeBackColorEveryNRow>
+                    <FrameColor>White</FrameColor>
+                    <Size>697, 63</Size>
+                    <BackColor>White</BackColor>
+                    <Visible>True</Visible>
+                    <ForeColor>Black</ForeColor>
+                </BaseRowItem>
+            </Items>
+            <Location>50, 231</Location>
+            <DrawBorder>False</DrawBorder>
+        </BaseSection>
+        <BaseSection>
+            <Size>727, 60</Size>
+            <Name>ReportPageFooter</Name>
+            <PageBreakAfter>False</PageBreakAfter>
+            <SectionMargin>0</SectionMargin>
+            <SectionOffset>0</SectionOffset>
+            <BackColor>White</BackColor>
+            <Items>
+                <BaseTextItem>
+                    <BackColor>White</BackColor>
+                    <CanShrink>False</CanShrink>
+                    <StringTrimming>None</StringTrimming>
+                    <Text>='Page (' + Globals!PageNumber + ') of ( ' + Globals!TotalPages +  ' ) Pages'</Text>
+                    <Location>403, 21</Location>
+                    <ContentAlignment>TopLeft</ContentAlignment>
+                    <Visible>True</Visible>
+                    <DrawBorder>False</DrawBorder>
+                    <Font>Microsoft Sans Serif, 8.25pt</Font>
+                    <CanGrow>False</CanGrow>
+                    <FormatString />
+                    <Name>='Page ' + Global!PageNumber + 'of ' + Global!Pages + 'Pages'</Name>
+                    <FrameColor>White</FrameColor>
+                    <Size>166, 20</Size>
+                    <ForeColor>ControlText</ForeColor>
+                </BaseTextItem>
+            </Items>
+            <Location>50, 336</Location>
+            <DrawBorder>False</DrawBorder>
+        </BaseSection>
+        <BaseSection>
+            <Size>727, 60</Size>
+            <Name>ReportFooter</Name>
+            <PageBreakAfter>False</PageBreakAfter>
+            <SectionMargin>0</SectionMargin>
+            <SectionOffset>0</SectionOffset>
+            <BackColor>White</BackColor>
+            <Items />
+            <Location>50, 411</Location>
+            <DrawBorder>False</DrawBorder>
+        </BaseSection>
+    </SectionCollection>
+</ReportModel>
\ No newline at end of file
diff --git a/samples/SharpDevelopReports/SampleReports/FormSheet/JCA.srd b/samples/SharpDevelopReports/SampleReports/FormSheet/JCA.srd
index eecfab4742..d625aa2bac 100644
--- a/samples/SharpDevelopReports/SampleReports/FormSheet/JCA.srd
+++ b/samples/SharpDevelopReports/SampleReports/FormSheet/JCA.srd
@@ -4,7 +4,6 @@
         <ReportSettings>
             <DefaultFont>Microsoft Sans Serif, 10pt</DefaultFont>
             <DataModel>FormSheet</DataModel>
-            <FileName>D:\SharpDevelop3.0_CHECKOUT\SharpDevelop\samples\SharpDevelopReports\SampleReports\FormSheet\JCA.srd</FileName>
             <RightMargin>50</RightMargin>
             <UseStandardPrinter>True</UseStandardPrinter>
             <SortColumnCollection />
@@ -43,7 +42,7 @@
                     <ScaleImageToSize>False</ScaleImageToSize>
                     <BackColor>Window</BackColor>
                     <RelativeFileName>..\..\Logos\Bannerbeige2.gif</RelativeFileName>
-                    <ImageFileName>D:\SharpDevelop3.0_CHECKOUT\SharpDevelop\samples\SharpDevelopReports\SampleReports\Logos\Bannerbeige2.gif</ImageFileName>
+                    <ImageFileName>D:\SharpDevelop3.0_WorkingCopy\SharpDevelop\samples\SharpDevelopReports\SampleReports\Logos\Bannerbeige2.gif</ImageFileName>
                 </BaseImageItem>
             </Items>
             <Location>50, 50</Location>
diff --git a/samples/SharpDevelopReports/SampleReports/Ilist/ContributorsList.srd b/samples/SharpDevelopReports/SampleReports/Ilist/ContributorsList.srd
index 9818ad597d..1b7b660a2c 100644
--- a/samples/SharpDevelopReports/SampleReports/Ilist/ContributorsList.srd
+++ b/samples/SharpDevelopReports/SampleReports/Ilist/ContributorsList.srd
@@ -86,7 +86,7 @@
                     <Size>661, 42</Size>
                     <ScaleImageToSize>False</ScaleImageToSize>
                     <BackColor>Window</BackColor>
-                    <RelativeFileName>..\Logos\Bannerbeige2.gif</RelativeFileName>
+                    <RelativeFileName>..\..\..\..\..\..\SharpDevelop3.0_CHECKOUT\SharpDevelop\samples\SharpDevelopReports\SampleReports\Logos\Bannerbeige2.gif</RelativeFileName>
                     <ImageFileName>D:\SharpDevelop3.0_CHECKOUT\SharpDevelop\samples\SharpDevelopReports\SampleReports\Logos\Bannerbeige2.gif</ImageFileName>
                 </BaseImageItem>
                 <BaseLineItem>
@@ -133,13 +133,9 @@
             <BackColor>Window</BackColor>
             <Items>
                 <BaseRowItem>
+                    <Location>3, 10</Location>
                     <AlternateBackColor />
-                    <FrameColor>WindowFrame</FrameColor>
                     <Name>Row</Name>
-                    <Location>3, 10</Location>
-                    <Visible>True</Visible>
-                    <Size>699, 40</Size>
-                    <Padding>5, 5, 5, 5</Padding>
                     <Items>
                         <BaseDataItem>
                             <DataType>System.String</DataType>
@@ -200,9 +196,12 @@
                             <FrameColor>WindowFrame</FrameColor>
                         </BaseDataItem>
                     </Items>
+                    <DrawBorder>False</DrawBorder>
                     <ChangeBackColorEveryNRow>0</ChangeBackColorEveryNRow>
+                    <FrameColor>WindowFrame</FrameColor>
+                    <Size>699, 40</Size>
                     <BackColor>White</BackColor>
-                    <DrawBorder>False</DrawBorder>
+                    <Visible>True</Visible>
                     <ForeColor>ControlText</ForeColor>
                 </BaseRowItem>
             </Items>
diff --git a/samples/SharpDevelopReports/src/ReportSamples.sln b/samples/SharpDevelopReports/src/ReportSamples.sln
index 210978227f..3107ea800d 100644
--- a/samples/SharpDevelopReports/src/ReportSamples.sln
+++ b/samples/SharpDevelopReports/src/ReportSamples.sln
@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 10.00
 # Visual Studio 2008
-# SharpDevelop 3.2.0.5405
+# SharpDevelop 3.2.0.5633
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpReportSamples", "SharpReportSamples\SharpReportSamples.csproj", "{BB5D34DA-3561-48B1-894A-46765C2A18C1}"
 EndProject
 Global
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/ContributorsList.cs b/samples/SharpDevelopReports/src/SharpReportSamples/ContributorsList.cs
index 4c616dc80a..e3f44d5bb9 100644
--- a/samples/SharpDevelopReports/src/SharpReportSamples/ContributorsList.cs
+++ b/samples/SharpDevelopReports/src/SharpReportSamples/ContributorsList.cs
@@ -17,10 +17,7 @@ namespace SharpReportSamples
 	/// </summary>
 	public class ContributorsReportData
 	{
-/*
-		This list is by no means exhaustive:
-•Siegfried Pammer
-*/
+
 		public static ContributorCollection CreateContributorsList () {
 			ContributorCollection list = new ContributorCollection();
 			
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/EventLogger.cs b/samples/SharpDevelopReports/src/SharpReportSamples/EventLogger.cs
new file mode 100644
index 0000000000..d1f70774be
--- /dev/null
+++ b/samples/SharpDevelopReports/src/SharpReportSamples/EventLogger.cs
@@ -0,0 +1,94 @@
+/*
+ * Erstellt mit SharpDevelop.
+ * Benutzer: Peter Forstmeier
+ * Datum: 24.03.2010
+ * Zeit: 19:45
+ * 
+ * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
+ */
+using System;
+using System.Collections;
+using System.Diagnostics;
+using System.Drawing;
+using System.IO;
+using System.Reflection;
+using System.Windows.Forms;
+
+namespace SharpReportSamples
+{
+	/// <summary>
+	/// Description of EventLogger.
+	/// </summary>
+	public class EventLogger
+	{
+		ImageList imageList ;
+		string fileName;
+		
+		public EventLogger(string fileName)
+		{
+			this.fileName = fileName;
+			this.Run();
+		}
+
+		private  void Run() {
+			
+			EventLog ev = new EventLog();
+			ev.Log = "System";
+			ev.MachineName = ".";  // Lokale Maschine
+			FillImageList();
+			ArrayList ar = new ArrayList();
+			foreach (System.Diagnostics.EventLogEntry entry in ev.Entries)
+			{
+				if (entry.TimeWritten > DateTime.Now.AddDays(-1))
+				{
+					ar.Add(entry);
+				}
+			}
+			this.EventLog = ar;
+		}
+		
+		
+		
+//		using (var provider = ProfilingDataSQLiteProvider.FromFile("ProfilingSession.sdps"))
+//		var functions = provider.GetFunctions(0, provider.DataSets.Count - 1);
+//		foreach (CallTreeNode n in functions) Console.WriteLine("{0}: {1} calls, {2:f2}ms", n.Name, n.CallCount, n.TimeSpent);
+		
+		
+	
+		private void FillImageList() {
+			string ns = this.GetType().Namespace;
+			
+//			System.Console.WriteLine("{0}",ns);
+			
+			Assembly a = Assembly.GetExecutingAssembly();
+			string [] resNames = a.GetManifestResourceNames();
+//			foreach(string s in resNames)
+//			{
+//				System.Console.WriteLine("{0}",s);
+//			}
+
+			this.imageList = new ImageList();
+Stream imgStream =  a.GetManifestResourceStream("SharpReportSamples.Resources.error.ico");
+//			Stream imgStream =  a.GetManifestResourceStream("SharpReportSamples.Resources.Error.png");
+			this.imageList.Images.Add(Image.FromStream(imgStream));
+			
+			imgStream =  a.GetManifestResourceStream("SharpReportSamples.Resources.Info.png");
+			this.imageList.Images.Add(Image.FromStream(imgStream));
+			imgStream =  a.GetManifestResourceStream("SharpReportSamples.Resources.warning.ico");
+//			imgStream =  a.GetManifestResourceStream("SharpReportSamples.Resources.Warning.png");
+			this.imageList.Images.Add(Image.FromStream(imgStream));
+			
+//			System.Console.WriteLine("imagelist contains {0} images",this.imageList.Images.Count);
+		}
+		
+		
+		public ArrayList EventLog {get;set;}
+		
+		
+		public ImageList Images
+		{
+			get {return this.imageList;}
+		}
+	}
+}
+
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.Designer.cs b/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.Designer.cs
index cefd69bc8d..c5ef88c789 100644
--- a/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.Designer.cs
+++ b/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.Designer.cs
@@ -40,11 +40,13 @@ namespace SharpReportSamples
 			System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("PullModel");
 			System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("PushModel-IList");
 			System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("Provider Independent");
-			System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Sample Reports", new System.Windows.Forms.TreeNode[] {
+			System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Customized");
+			System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("Sample Reports", new System.Windows.Forms.TreeNode[] {
 									treeNode1,
 									treeNode2,
 									treeNode3,
-									treeNode4});
+									treeNode4,
+									treeNode5});
 			this.splitContainer1 = new System.Windows.Forms.SplitContainer();
 			this.treeView1 = new System.Windows.Forms.TreeView();
 			this.label1 = new System.Windows.Forms.Label();
@@ -81,18 +83,20 @@ namespace SharpReportSamples
 			this.treeView1.Location = new System.Drawing.Point(10, 10);
 			this.treeView1.Margin = new System.Windows.Forms.Padding(5);
 			this.treeView1.Name = "treeView1";
-			treeNode1.Name = "FormSheetItem";
+			treeNode1.Name = "FormSheetNode";
 			treeNode1.Text = "FormSheet";
-			treeNode2.Name = "PullModelItem";
+			treeNode2.Name = "PullModelNode";
 			treeNode2.Text = "PullModel";
-			treeNode3.Name = "iListNode";
+			treeNode3.Name = "IListNode";
 			treeNode3.Text = "PushModel-IList";
-			treeNode4.Name = "Knoten0";
+			treeNode4.Name = "ProviderIndependedNode";
 			treeNode4.Text = "Provider Independent";
-			treeNode5.Name = "Knoten0";
-			treeNode5.Text = "Sample Reports";
+			treeNode5.Name = "CustomizedNode";
+			treeNode5.Text = "Customized";
+			treeNode6.Name = "Customized";
+			treeNode6.Text = "Sample Reports";
 			this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
-									treeNode5});
+									treeNode6});
 			this.treeView1.Size = new System.Drawing.Size(148, 444);
 			this.treeView1.TabIndex = 0;
 			this.treeView1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.TreeView1MouseDoubleClick);
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs b/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs
index e879438510..3aaee47e6f 100644
--- a/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs
+++ b/samples/SharpDevelopReports/src/SharpReportSamples/MainForm.cs
@@ -15,6 +15,7 @@ using System.IO;
 using System.Windows.Forms;
 
 using ICSharpCode.Reports.Core;
+using ICSharpCode.Reports.Core.Exporter.ExportRenderer;
 
 namespace SharpReportSamples
 {
@@ -28,6 +29,8 @@ namespace SharpReportSamples
 		private TreeNode pullNode;
 		private TreeNode iListNode;
 		private TreeNode providerIndependent;
+		private TreeNode customized;
+		private ImageList imageList;
 		
 		public MainForm()
 		{
@@ -38,14 +41,6 @@ namespace SharpReportSamples
 			InitTree();
 			UpdateStatusbar (Application.StartupPath);
 			this.previewControl1.Messages = new ReportViewerMessagesProvider();
-			
-			/*
-			EventLog ev = new EventLog();
-			ev.Log = "System";
-			ev.MachineName = ".";  // Lokale Maschine
-			ArrayList ar = new ArrayList();
-			ar.AddRange(ev.Entries);
-			 */
 		}
 		
 		
@@ -55,10 +50,9 @@ namespace SharpReportSamples
 			
 			string startupPath = Application.StartupPath;
 			string samplesDir = @"SharpDevelopReports\";
-			int y = startupPath.IndexOf(samplesDir);
-			string startPath = startupPath.Substring(0,y + samplesDir.Length) + @"SampleReports\";
+			int i = startupPath.IndexOf(samplesDir);
+			string startPath = startupPath.Substring(0,i + samplesDir.Length) + @"SampleReports\";
 			
-			//D:\Reporting3.0_branches\SharpDevelop\samples\SharpDevelopReports\SampleReports
 			
 			string pathToFormSheet = startPath + formSheetDir;
 			
@@ -66,14 +60,16 @@ namespace SharpReportSamples
 			this.pullNode =  this.treeView1.Nodes[0].Nodes[1];
 			this.iListNode = this.treeView1.Nodes[0].Nodes[2];
 			this.providerIndependent = this.treeView1.Nodes[0].Nodes[3];
+			this.customized = this.treeView1.Nodes[0].Nodes[4];
 			
 			AddNodesToTree (this.formNode,startPath + @"FormSheet\" );
 			AddNodesToTree (this.pullNode,startPath + @"PullModel\" );
 			AddNodesToTree (this.iListNode,startPath + @"IList\" );
 			AddNodesToTree (this.providerIndependent,startPath + @"ProviderIndependent\" );
-
+			AddNodesToTree (this.customized,startPath + @"Customized\" );
 		}
 		
+		
 		private void AddNodesToTree (TreeNode parent,string path)
 		{
 			if (!Directory.Exists(path)) {
@@ -104,7 +100,9 @@ namespace SharpReportSamples
 				this.RunContributors(reportName);
 			} else if (s == "NoConnectionReport") {
 				this.RunProviderIndependent(reportName);
-			}
+			} else if (s =="EventLog")
+			this.RunEventLogger(reportName);
+//			this.RunEventLogger_Pdf(reportName);
 			else {
 				
 				ReportParameters parameters =  ReportEngine.LoadParameters(reportName);
@@ -171,44 +169,157 @@ namespace SharpReportSamples
 			{
 				this.previewControl1.RunReport(model,dataManager);
 			};
-			
 			this.previewControl1.RunReport(model,dataManager);
 		}
 		
 		
-		//Try this to react to SectionrenderEvent,
-		/*
-		private void PushPrinting (object sender,SectionRenderEventArgs e)
+		
+		private void RunEventLogger_Pdf (string fileName)
 		{
+			Cursor.Current = Cursors.WaitCursor;
+			EventLogger eventLogger = new EventLogger(fileName);
+			Cursor.Current = Cursors.Default;
 
-			switch (e.CurrentSection) {
-				case GlobalEnums.ReportSection.ReportHeader:
-					break;
+			this.imageList = eventLogger.Images;
+			
+			ReportModel model = ReportEngine.LoadReportModel(fileName);
+			IReportCreator creator = ReportEngine.CreatePageBuilder(model,eventLogger.EventLog,null);
+			creator.SectionRendering += PushPrinting;
+			creator.BuildExportList();
+			using (PdfRenderer pdfRenderer = PdfRenderer.CreateInstance(creator,SelectFilename(),true))
+			{
+				pdfRenderer.Start();
+				pdfRenderer.RenderOutput();
+				pdfRenderer.End();
+			}
+		}
+		
+		
+		private void RunEventLogger (string fileName)
+		{
+			/*
+			using (var provider = ProfilingDataSQLiteProvider.FromFile("ProfilingSession.sdps")){
+				var functions = provider.GetFunctions(0, provider.DataSets.Count - 1);
+				foreach (CallTreeNode n in functions) {
+					Console.WriteLine("{0}: {1} calls, {2:f2}ms", n.Name, n.CallCount, n.TimeSpent);
+				}
+				
+			}
+			*/
+			Cursor.Current = Cursors.WaitCursor;
+			EventLogger eLog = new EventLogger(fileName);
+			Cursor.Current = Cursors.Default;
 
-				case GlobalEnums.ReportSection.ReportPageHeader:
-					break;
-					
-				case GlobalEnums.ReportSection.ReportDetail:
-					BaseRowItem ri = e.Section.Items[0] as BaseRowItem;
-					if (ri != null) {
-						BaseDataItem r = (BaseDataItem)ri.Items.Find("unbound3");
-						if (r != null) {
-							r.DBValue = "xxxxxxx";
-						}
-					}
+			this.imageList = eLog.Images;
+			
+			ReportModel model = ReportEngine.LoadReportModel(fileName);
+			IDataManager dataManager = DataManager.CreateInstance(eLog.EventLog,model.ReportSettings);
+			
+			this.previewControl1.SectionRendering += PushPrinting;
+			
+			this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e)
+		
+			{
+				this.previewControl1.RunReport(model,dataManager);
+			};
+			this.previewControl1.RunReport(model,dataManager);
+		}
+		
+		
+		//Handles  SectionRenderEvent
+		int hour = 0;
+		
+		private void PushPrinting (object sender, SectionRenderEventArgs e )
+		{
+			string sectionName = e.Section.Name;
+			
+			if (sectionName == ReportSectionNames.ReportHeader) {
+				Console.WriteLine("PushPrinting  :" + ReportSectionNames.ReportHeader);
+			} 
+			
+			else if (sectionName == ReportSectionNames.ReportPageHeader) {
+				Console.WriteLine("PushPrinting :" +ReportSectionNames .ReportPageHeader);
+			} 
+			
+			else if (sectionName == ReportSectionNames.ReportDetail){
+				Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportDetail);
+				// TimeWritten
+				BaseDataItem time = e.Section.FindItem("BaseDataItem1") as BaseDataItem;
+				if (time != null) {
+					DateTime dateTime = Convert.ToDateTime(time.DBValue);
 					
-					break;
-				case GlobalEnums.ReportSection.ReportPageFooter:
-					break;
+					int newhour = dateTime.Hour;
+					if (hour != newhour) {
+						hour = newhour;
+						e.Section.Items[0].DrawBorder = true;
+						e.Section.Items[0].FrameColor = Color.Black;
+//						e.Section.Items[0].BackColor = Color.LightGray;
+						time.DBValue = dateTime.Hour.ToString();
+						time.ContentAlignment = ContentAlignment.MiddleLeft;
 					
-				case GlobalEnums.ReportSection.ReportFooter:
-					break;
+					} else {
+						time.DrawBorder = false;
+						e.Section.Items[0].FrameColor = Color.White;
+//						e.Section.Items[0].BackColor = Color.White;
+						time.DBValue = dateTime.Minute.ToString() + ":" + dateTime.Second.ToString();
+						time.ContentAlignment = ContentAlignment.MiddleRight;
+						
+					}
+				}
+//				D:\SharpDevelop3.0_WorkingCopy\SharpDevelop\samples\SharpDevelopReports\SampleReports\EventLogger\Error.png
+				//  Image
+				BaseDataItem dataItem = e.Section.FindItem("EntryType") as BaseDataItem;
+				if (dataItem != null) {
+					string str = dataItem.DBValue;
+					Image image = null;
+					if (str == "Information") {
+						image = this.imageList.Images[1];
+					} else if (str == "Warning") {
+						image = this.imageList.Images[2];
+					} else if (str == "Error")
+					{
+						image = this.imageList.Images[0];
+					}
 					
-				default:
-					break;
+					if (image != null)
+					{
+						BaseImageItem imageItem = e.Section.FindItem("BaseImageItem1") as BaseImageItem;
+						if (imageItem != null) {
+							imageItem.Image = image;
+						}
+					}
+				}
+			}
+			
+			else if (sectionName == ReportSectionNames.ReportPageFooter){
+				Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportPageFooter);
+			}
+			
+			else if (sectionName == ReportSectionNames.ReportFooter){
+				Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportFooter);
+			}
+			
+			else{
+				throw new WrongSectionException(sectionName);
 			}
 		}
-		 */
+		
+		
+		private string SelectFilename()
+		{
+			using (SaveFileDialog saveDialog = new SaveFileDialog()){
+
+				saveDialog.FileName = "_pdf";
+				saveDialog.DefaultExt = "PDF";
+				saveDialog.ValidateNames = true;
+				if(saveDialog.ShowDialog() == DialogResult.OK){
+					return saveDialog.FileName;
+				} else {
+					return String.Empty;
+				}
+			}
+		}
+		
 		#endregion
 		
 
@@ -246,21 +357,6 @@ namespace SharpReportSamples
 			}
 		}
 		
-		
-		private string SelectFilename()
-		{
-			using (SaveFileDialog saveDialog = new SaveFileDialog()){
-
-				saveDialog.FileName = "_pdf";
-				saveDialog.DefaultExt = "PDF";
-				saveDialog.ValidateNames = true;
-				if(saveDialog.ShowDialog() == DialogResult.OK){
-					return saveDialog.FileName;
-				} else {
-					return String.Empty;
-				}
-			}
-		}
 		 */
 	}
 }
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/Resources/Info.png b/samples/SharpDevelopReports/src/SharpReportSamples/Resources/Info.png
new file mode 100644
index 0000000000..c9b7bdc15b
Binary files /dev/null and b/samples/SharpDevelopReports/src/SharpReportSamples/Resources/Info.png differ
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/Resources/error.ico b/samples/SharpDevelopReports/src/SharpReportSamples/Resources/error.ico
new file mode 100644
index 0000000000..c444ce95ac
Binary files /dev/null and b/samples/SharpDevelopReports/src/SharpReportSamples/Resources/error.ico differ
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/Resources/warning.ico b/samples/SharpDevelopReports/src/SharpReportSamples/Resources/warning.ico
new file mode 100644
index 0000000000..07adc5b07d
Binary files /dev/null and b/samples/SharpDevelopReports/src/SharpReportSamples/Resources/warning.ico differ
diff --git a/samples/SharpDevelopReports/src/SharpReportSamples/SharpReportSamples.csproj b/samples/SharpDevelopReports/src/SharpReportSamples/SharpReportSamples.csproj
index 48b385eb75..382acd5edd 100644
--- a/samples/SharpDevelopReports/src/SharpReportSamples/SharpReportSamples.csproj
+++ b/samples/SharpDevelopReports/src/SharpReportSamples/SharpReportSamples.csproj
@@ -43,6 +43,7 @@
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
     <Reference Include="System.Drawing" />
+    <Reference Include="System.Management" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml" />
     <Reference Include="System.Xml.Linq">
@@ -51,6 +52,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="ContributorsList.cs" />
+    <Compile Include="EventLogger.cs" />
     <Compile Include="MainForm.cs" />
     <Compile Include="MainForm.Designer.cs">
       <DependentUpon>MainForm.cs</DependentUpon>
@@ -61,15 +63,9 @@
     <EmbeddedResource Include="MainForm.resx">
       <DependentUpon>MainForm.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="..\..\SampleReports\EventLogger\Error.png">
-      <Link>Resources\Error.png</Link>
-    </EmbeddedResource>
-    <EmbeddedResource Include="..\..\SampleReports\EventLogger\Info.png">
-      <Link>Resources\Info.png</Link>
-    </EmbeddedResource>
-    <EmbeddedResource Include="..\..\SampleReports\EventLogger\Warning.png">
-      <Link>Resources\Warning.png</Link>
-    </EmbeddedResource>
+    <EmbeddedResource Include="Resources\error.ico" />
+    <EmbeddedResource Include="Resources\Info.png" />
+    <EmbeddedResource Include="Resources\warning.ico" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Resources" />
diff --git a/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/SharpSnippetCompilerControl.cs b/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/SharpSnippetCompilerControl.cs
index 70396e523c..0c8a0680a6 100644
--- a/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/SharpSnippetCompilerControl.cs
+++ b/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/SharpSnippetCompilerControl.cs
@@ -32,8 +32,6 @@ namespace ICSharpCode.SharpSnippetCompiler.Core
 			textEditor = new SharpDevelopTextAreaControl();
 			textEditor.Dock = DockStyle.Fill;
 			this.Controls.Add(textEditor);
-			
-			textEditor.ActiveTextAreaControl.TextArea.IconBarMargin.MouseDown += MarginMouseDown;
 		}
 		
 		public TextEditorControl TextEditor {
@@ -49,18 +47,5 @@ namespace ICSharpCode.SharpSnippetCompiler.Core
 		{
 			textEditor.SaveFile(textEditor.FileName);
 		}
-		
-		static void MarginMouseDown(AbstractMargin iconBar, Point mousepos, MouseButtons mouseButtons)
-		{
-			if (mouseButtons != MouseButtons.Left) return;
-			
-			Rectangle viewRect = iconBar.TextArea.TextView.DrawingPosition;
-			TextLocation logicPos = iconBar.TextArea.TextView.GetLogicalPosition(0, mousepos.Y - viewRect.Top);
-			
-			if (logicPos.Y >= 0 && logicPos.Y < iconBar.TextArea.Document.TotalNumberOfLines) {
-				DebuggerService.ToggleBreakpointAt(iconBar.TextArea.Document, iconBar.TextArea.MotherTextEditorControl.FileName, logicPos.Y);
-				iconBar.TextArea.Refresh(iconBar);
-			}
-		}		
 	}
 }
diff --git a/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/Workbench.cs b/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/Workbench.cs
index 21133f5290..5570fac10a 100644
--- a/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/Workbench.cs
+++ b/samples/SharpSnippetCompiler/SharpSnippetCompiler.Core/Workbench.cs
@@ -91,7 +91,8 @@ namespace ICSharpCode.SharpSnippetCompiler.Core
 		
 		public void ShowView(IViewContent content)
 		{
-			throw new NotImplementedException();
+			views.Add(content);
+			OnViewOpened(new ViewContentEventArgs(content));
 		}
 		
 		public void ShowPad(PadDescriptor content)
@@ -121,7 +122,11 @@ namespace ICSharpCode.SharpSnippetCompiler.Core
 		
 		public void CloseContent(IViewContent content)
 		{
-			throw new NotImplementedException();
+			if (views.Contains(content)) {
+				views.Remove(content);
+			}
+			
+			content.Dispose();
 		}
 		
 		public void CloseAllViews()
diff --git a/samples/SharpSnippetCompiler/SharpSnippetCompiler/MainForm.cs b/samples/SharpSnippetCompiler/SharpSnippetCompiler/MainForm.cs
index a50bcfb754..e3e906f237 100644
--- a/samples/SharpSnippetCompiler/SharpSnippetCompiler/MainForm.cs
+++ b/samples/SharpSnippetCompiler/SharpSnippetCompiler/MainForm.cs
@@ -1,5 +1,5 @@
 // SharpDevelop samples
-// Copyright (c) 2008, AlphaSierraPapa
+// Copyright (c) 2010, AlphaSierraPapa
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without modification, are
@@ -31,6 +31,8 @@ using System.Collections.Generic;
 using System.IO;
 using System.Windows.Forms;
 
+using ICSharpCode.Core;
+using ICSharpCode.SharpDevelop;
 using ICSharpCode.SharpDevelop.Commands;
 using ICSharpCode.SharpDevelop.Gui;
 using ICSharpCode.SharpDevelop.Project;
@@ -91,7 +93,7 @@ namespace ICSharpCode.SharpSnippetCompiler
 			get { return fileTabControl.SelectedTab as SnippetTabPage; }
 		}
 		
-		public void LoadFile(string fileName)
+		public IViewContent LoadFile(string fileName)
 		{
 			// Create a new tab page.
 			SharpSnippetCompilerControl snippetControl = new SharpSnippetCompilerControl();
@@ -107,9 +109,11 @@ namespace ICSharpCode.SharpSnippetCompiler
 			
 			WorkbenchWindow window = new WorkbenchWindow(fileTabControl, tabPage);
 			MainViewContent view = new MainViewContent(fileName, snippetControl, window);
-			WorkbenchSingleton.Workbench.ViewContentCollection.Add(view);
+			WorkbenchSingleton.Workbench.ShowView(view);
 			
 			UpdateActiveView(view);
+			
+			return view;
 		}
 		
 		public void ActivateErrorList()
@@ -357,7 +361,14 @@ namespace ICSharpCode.SharpSnippetCompiler
 				if (item != null) {
 					ProjectService.RemoveProjectItem(project, item);
 					project.Save();
-
+					
+					foreach (IViewContent view in WorkbenchSingleton.Workbench.ViewContentCollection) {
+						if (view.Control == snippetControl) {
+							WorkbenchSingleton.Workbench.CloseContent(view);
+							break;
+						}
+					}
+						
 					fileTabControl.TabPages.Remove(activeTabPage);
 					activeTabPage.Dispose();
 				}
diff --git a/samples/SharpSnippetCompiler/SharpSnippetCompiler/Program.cs b/samples/SharpSnippetCompiler/SharpSnippetCompiler/Program.cs
index 4f723fe119..8316b04261 100644
--- a/samples/SharpSnippetCompiler/SharpSnippetCompiler/Program.cs
+++ b/samples/SharpSnippetCompiler/SharpSnippetCompiler/Program.cs
@@ -1,5 +1,5 @@
 // SharpDevelop samples
-// Copyright (c) 2008, AlphaSierraPapa
+// Copyright (c) 2010, AlphaSierraPapa
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without modification, are
@@ -32,6 +32,7 @@ using System.Windows.Forms;
 
 using ICSharpCode.Core;
 using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Debugging;
 using ICSharpCode.SharpDevelop.Gui;
 using ICSharpCode.SharpDevelop.Project;
 using ICSharpCode.SharpSnippetCompiler.Core;
@@ -54,6 +55,10 @@ namespace ICSharpCode.SharpSnippetCompiler
 			SharpSnippetCompilerManager.Init();
 		
 			mainForm = new MainForm();
+			
+			// Force creation of the debugger before workbench is created.
+			IDebugger debugger = DebuggerService.CurrentDebugger;
+			
 			Workbench workbench = new Workbench(mainForm);
 			WorkbenchSingleton.InitializeWorkbench(workbench, new WorkbenchLayout());
 			PadDescriptor errorList = workbench.GetPad(typeof(ErrorListPad));
diff --git a/samples/SharpSnippetCompiler/SharpSnippetCompiler/SharpSnippetCompiler.csproj b/samples/SharpSnippetCompiler/SharpSnippetCompiler/SharpSnippetCompiler.csproj
index 65ddeeda56..949c7a4aaf 100644
--- a/samples/SharpSnippetCompiler/SharpSnippetCompiler/SharpSnippetCompiler.csproj
+++ b/samples/SharpSnippetCompiler/SharpSnippetCompiler/SharpSnippetCompiler.csproj
@@ -69,6 +69,7 @@
     </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="SnippetTabPage.cs" />
+    <Compile Include="TextEditorDisplayBinding.cs" />
     <Compile Include="WorkbenchLayout.cs" />
     <Compile Include="WorkbenchWindow.cs" />
     <EmbeddedResource Include="MainForm.resx">
diff --git a/samples/SharpSnippetCompiler/SharpSnippetCompiler/TextEditorDisplayBinding.cs b/samples/SharpSnippetCompiler/SharpSnippetCompiler/TextEditorDisplayBinding.cs
new file mode 100644
index 0000000000..58e830a270
--- /dev/null
+++ b/samples/SharpSnippetCompiler/SharpSnippetCompiler/TextEditorDisplayBinding.cs
@@ -0,0 +1,52 @@
+// SharpDevelop samples
+// Copyright (c) 2010, AlphaSierraPapa
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification, are
+// permitted provided that the following conditions are met:
+//
+// - Redistributions of source code must retain the above copyright notice, this list
+//   of conditions and the following disclaimer.
+//
+// - Redistributions in binary form must reproduce the above copyright notice, this list
+//   of conditions and the following disclaimer in the documentation and/or other materials
+//   provided with the distribution.
+//
+// - Neither the name of the SharpDevelop team nor the names of its contributors may be used to
+//   endorse or promote products derived from this software without specific prior written
+//   permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &AS IS& AND ANY EXPRESS
+// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+using System;
+using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Gui;
+using ICSharpCode.SharpSnippetCompiler.Core;
+
+namespace ICSharpCode.SharpSnippetCompiler
+{
+	public class TextEditorDisplayBinding : IDisplayBinding
+	{
+		public TextEditorDisplayBinding()
+		{
+		}
+		
+		public bool CanCreateContentForFile(string fileName)
+		{
+			return true;
+		}
+		
+		public IViewContent CreateContentForFile(OpenedFile file)
+		{
+			MainForm form = WorkbenchSingleton.MainForm as MainForm;
+			return form.LoadFile(file.FileName);
+		}
+	}
+}
diff --git a/src/AddIns/Misc/HtmlHelp2/Project/src/Commands/ShowErrorHelpCommand.cs b/src/AddIns/Misc/HtmlHelp2/Project/src/Commands/ShowErrorHelpCommand.cs
index d6350be56f..822b35e20e 100644
--- a/src/AddIns/Misc/HtmlHelp2/Project/src/Commands/ShowErrorHelpCommand.cs
+++ b/src/AddIns/Misc/HtmlHelp2/Project/src/Commands/ShowErrorHelpCommand.cs
@@ -29,6 +29,9 @@ namespace HtmlHelp2.Commands
 			
 			// Search all selected tasks
 			foreach (Task t in new List<Task>(view.SelectedTasks)) {
+				if (t.BuildError == null)
+					continue;
+				
 				string code = t.BuildError.ErrorCode;
 				
 				if (string.IsNullOrEmpty(code))
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
index 4f88c33718..5e42c06c4c 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
@@ -180,7 +180,7 @@ out u);
 	void GlobalAttributeSection() {
 		Expect(28);
 
-#line  2521 "VBNET.ATG" 
+#line  2522 "VBNET.ATG" 
 		Location startPos = t.Location; 
 		if (la.kind == 52) {
 			lexer.NextToken();
@@ -188,20 +188,20 @@ out u);
 			lexer.NextToken();
 		} else SynErr(226);
 
-#line  2523 "VBNET.ATG" 
+#line  2524 "VBNET.ATG" 
 		string attributeTarget = t.val != null ? t.val.ToLower(System.Globalization.CultureInfo.InvariantCulture) : null;
 		List<ASTAttribute> attributes = new List<ASTAttribute>();
 		ASTAttribute attribute;
 		
 		Expect(11);
 		Attribute(
-#line  2527 "VBNET.ATG" 
+#line  2528 "VBNET.ATG" 
 out attribute);
 
-#line  2527 "VBNET.ATG" 
+#line  2528 "VBNET.ATG" 
 		attributes.Add(attribute); 
 		while (
-#line  2528 "VBNET.ATG" 
+#line  2529 "VBNET.ATG" 
 NotFinalComma()) {
 			if (la.kind == 12) {
 				lexer.NextToken();
@@ -213,10 +213,10 @@ NotFinalComma()) {
 				Expect(11);
 			}
 			Attribute(
-#line  2528 "VBNET.ATG" 
+#line  2529 "VBNET.ATG" 
 out attribute);
 
-#line  2528 "VBNET.ATG" 
+#line  2529 "VBNET.ATG" 
 			attributes.Add(attribute); 
 		}
 		if (la.kind == 12) {
@@ -225,7 +225,7 @@ out attribute);
 		Expect(27);
 		EndOfStmt();
 
-#line  2533 "VBNET.ATG" 
+#line  2534 "VBNET.ATG" 
 		AttributeSection section = new AttributeSection {
 		AttributeTarget = attributeTarget,
 		Attributes = attributes,
@@ -334,47 +334,47 @@ out aliasedType);
 	}
 
 	void Qualident(
-#line  3279 "VBNET.ATG" 
+#line  3280 "VBNET.ATG" 
 out string qualident) {
 
-#line  3281 "VBNET.ATG" 
+#line  3282 "VBNET.ATG" 
 		string name;
 		qualidentBuilder.Length = 0; 
 		
 		Identifier();
 
-#line  3285 "VBNET.ATG" 
+#line  3286 "VBNET.ATG" 
 		qualidentBuilder.Append(t.val); 
 		while (
-#line  3286 "VBNET.ATG" 
+#line  3287 "VBNET.ATG" 
 DotAndIdentOrKw()) {
 			Expect(16);
 			IdentifierOrKeyword(
-#line  3286 "VBNET.ATG" 
+#line  3287 "VBNET.ATG" 
 out name);
 
-#line  3286 "VBNET.ATG" 
+#line  3287 "VBNET.ATG" 
 			qualidentBuilder.Append('.'); qualidentBuilder.Append(name); 
 		}
 
-#line  3288 "VBNET.ATG" 
+#line  3289 "VBNET.ATG" 
 		qualident = qualidentBuilder.ToString(); 
 	}
 
 	void TypeName(
-#line  2394 "VBNET.ATG" 
+#line  2395 "VBNET.ATG" 
 out TypeReference typeref) {
 
-#line  2395 "VBNET.ATG" 
+#line  2396 "VBNET.ATG" 
 		ArrayList rank = null; 
 		NonArrayTypeName(
-#line  2397 "VBNET.ATG" 
+#line  2398 "VBNET.ATG" 
 out typeref, false);
 		ArrayTypeModifiers(
-#line  2401 "VBNET.ATG" 
+#line  2402 "VBNET.ATG" 
 out rank);
 
-#line  2402 "VBNET.ATG" 
+#line  2403 "VBNET.ATG" 
 		if (rank != null && typeref != null) {
 		typeref.RankSpecifier = (int[])rank.ToArray(typeof(int));
 		}
@@ -397,35 +397,35 @@ out rank);
 	}
 
 	void AttributeSection(
-#line  2596 "VBNET.ATG" 
+#line  2597 "VBNET.ATG" 
 out AttributeSection section) {
 
-#line  2598 "VBNET.ATG" 
+#line  2599 "VBNET.ATG" 
 		string attributeTarget = "";List<ASTAttribute> attributes = new List<ASTAttribute>();
 		ASTAttribute attribute;
 		
 		
 		Expect(28);
 
-#line  2602 "VBNET.ATG" 
+#line  2603 "VBNET.ATG" 
 		Location startPos = t.Location; 
 		if (
-#line  2603 "VBNET.ATG" 
+#line  2604 "VBNET.ATG" 
 IsLocalAttrTarget()) {
 			if (la.kind == 106) {
 				lexer.NextToken();
 
-#line  2604 "VBNET.ATG" 
+#line  2605 "VBNET.ATG" 
 				attributeTarget = "event";
 			} else if (la.kind == 180) {
 				lexer.NextToken();
 
-#line  2605 "VBNET.ATG" 
+#line  2606 "VBNET.ATG" 
 				attributeTarget = "return";
 			} else {
 				Identifier();
 
-#line  2608 "VBNET.ATG" 
+#line  2609 "VBNET.ATG" 
 				string val = t.val.ToLower(System.Globalization.CultureInfo.InvariantCulture);
 				if (val != "field"	|| val != "method" ||
 					val != "module" || val != "param"  ||
@@ -438,20 +438,20 @@ IsLocalAttrTarget()) {
 			Expect(11);
 		}
 		Attribute(
-#line  2618 "VBNET.ATG" 
+#line  2619 "VBNET.ATG" 
 out attribute);
 
-#line  2618 "VBNET.ATG" 
+#line  2619 "VBNET.ATG" 
 		attributes.Add(attribute); 
 		while (
-#line  2619 "VBNET.ATG" 
+#line  2620 "VBNET.ATG" 
 NotFinalComma()) {
 			Expect(12);
 			Attribute(
-#line  2619 "VBNET.ATG" 
+#line  2620 "VBNET.ATG" 
 out attribute);
 
-#line  2619 "VBNET.ATG" 
+#line  2620 "VBNET.ATG" 
 			attributes.Add(attribute); 
 		}
 		if (la.kind == 12) {
@@ -459,7 +459,7 @@ out attribute);
 		}
 		Expect(27);
 
-#line  2623 "VBNET.ATG" 
+#line  2624 "VBNET.ATG" 
 		section = new AttributeSection {
 		AttributeTarget = attributeTarget,
 		Attributes = attributes,
@@ -470,69 +470,69 @@ out attribute);
 	}
 
 	void TypeModifier(
-#line  3362 "VBNET.ATG" 
+#line  3363 "VBNET.ATG" 
 ModifierList m) {
 		switch (la.kind) {
 		case 173: {
 			lexer.NextToken();
 
-#line  3363 "VBNET.ATG" 
+#line  3364 "VBNET.ATG" 
 			m.Add(Modifiers.Public, t.Location); 
 			break;
 		}
 		case 172: {
 			lexer.NextToken();
 
-#line  3364 "VBNET.ATG" 
+#line  3365 "VBNET.ATG" 
 			m.Add(Modifiers.Protected, t.Location); 
 			break;
 		}
 		case 112: {
 			lexer.NextToken();
 
-#line  3365 "VBNET.ATG" 
+#line  3366 "VBNET.ATG" 
 			m.Add(Modifiers.Internal, t.Location); 
 			break;
 		}
 		case 170: {
 			lexer.NextToken();
 
-#line  3366 "VBNET.ATG" 
+#line  3367 "VBNET.ATG" 
 			m.Add(Modifiers.Private, t.Location); 
 			break;
 		}
 		case 185: {
 			lexer.NextToken();
 
-#line  3367 "VBNET.ATG" 
+#line  3368 "VBNET.ATG" 
 			m.Add(Modifiers.Static, t.Location); 
 			break;
 		}
 		case 184: {
 			lexer.NextToken();
 
-#line  3368 "VBNET.ATG" 
+#line  3369 "VBNET.ATG" 
 			m.Add(Modifiers.New, t.Location); 
 			break;
 		}
 		case 142: {
 			lexer.NextToken();
 
-#line  3369 "VBNET.ATG" 
+#line  3370 "VBNET.ATG" 
 			m.Add(Modifiers.Abstract, t.Location); 
 			break;
 		}
 		case 152: {
 			lexer.NextToken();
 
-#line  3370 "VBNET.ATG" 
+#line  3371 "VBNET.ATG" 
 			m.Add(Modifiers.Sealed, t.Location); 
 			break;
 		}
 		case 168: {
 			lexer.NextToken();
 
-#line  3371 "VBNET.ATG" 
+#line  3372 "VBNET.ATG" 
 			m.Add(Modifiers.Partial, t.Location); 
 			break;
 		}
@@ -962,28 +962,28 @@ out typeRef);
 	}
 
 	void TypeImplementsClause(
-#line  1563 "VBNET.ATG" 
+#line  1564 "VBNET.ATG" 
 out List<TypeReference> baseInterfaces) {
 
-#line  1565 "VBNET.ATG" 
+#line  1566 "VBNET.ATG" 
 		baseInterfaces = new List<TypeReference>();
 		TypeReference type = null;
 		
 		Expect(123);
 		TypeName(
-#line  1568 "VBNET.ATG" 
+#line  1569 "VBNET.ATG" 
 out type);
 
-#line  1570 "VBNET.ATG" 
+#line  1571 "VBNET.ATG" 
 		if (type != null) baseInterfaces.Add(type);
 		
 		while (la.kind == 12) {
 			lexer.NextToken();
 			TypeName(
-#line  1573 "VBNET.ATG" 
+#line  1574 "VBNET.ATG" 
 out type);
 
-#line  1574 "VBNET.ATG" 
+#line  1575 "VBNET.ATG" 
 			if (type != null) baseInterfaces.Add(type); 
 		}
 		EndOfStmt();
@@ -1113,10 +1113,10 @@ m, attributes);
 	}
 
 	void NonArrayTypeName(
-#line  2420 "VBNET.ATG" 
+#line  2421 "VBNET.ATG" 
 out TypeReference typeref, bool canBeUnbound) {
 
-#line  2422 "VBNET.ATG" 
+#line  2423 "VBNET.ATG" 
 		string name;
 		typeref = null;
 		bool isGlobal = false;
@@ -1126,36 +1126,36 @@ out TypeReference typeref, bool canBeUnbound) {
 				lexer.NextToken();
 				Expect(16);
 
-#line  2427 "VBNET.ATG" 
+#line  2428 "VBNET.ATG" 
 				isGlobal = true; 
 			}
 			QualIdentAndTypeArguments(
-#line  2428 "VBNET.ATG" 
+#line  2429 "VBNET.ATG" 
 out typeref, canBeUnbound);
 
-#line  2429 "VBNET.ATG" 
+#line  2430 "VBNET.ATG" 
 			typeref.IsGlobal = isGlobal; 
 			while (la.kind == 16) {
 				lexer.NextToken();
 
-#line  2430 "VBNET.ATG" 
+#line  2431 "VBNET.ATG" 
 				TypeReference nestedTypeRef; 
 				QualIdentAndTypeArguments(
-#line  2431 "VBNET.ATG" 
+#line  2432 "VBNET.ATG" 
 out nestedTypeRef, canBeUnbound);
 
-#line  2432 "VBNET.ATG" 
+#line  2433 "VBNET.ATG" 
 				typeref = new InnerClassTypeReference(typeref, nestedTypeRef.Type, nestedTypeRef.GenericTypes); 
 			}
 		} else if (la.kind == 154) {
 			lexer.NextToken();
 
-#line  2435 "VBNET.ATG" 
+#line  2436 "VBNET.ATG" 
 			typeref = new TypeReference("System.Object", true); 
 			if (la.kind == 21) {
 				lexer.NextToken();
 
-#line  2439 "VBNET.ATG" 
+#line  2440 "VBNET.ATG" 
 				List<TypeReference> typeArguments = new List<TypeReference>(1);
 				if (typeref != null) typeArguments.Add(typeref);
 				typeref = new TypeReference("System.Nullable", typeArguments) { IsKeyword = true };
@@ -1163,15 +1163,15 @@ out nestedTypeRef, canBeUnbound);
 			}
 		} else if (StartOf(11)) {
 			PrimitiveTypeName(
-#line  2445 "VBNET.ATG" 
+#line  2446 "VBNET.ATG" 
 out name);
 
-#line  2445 "VBNET.ATG" 
+#line  2446 "VBNET.ATG" 
 			typeref = new TypeReference(name, true); 
 			if (la.kind == 21) {
 				lexer.NextToken();
 
-#line  2449 "VBNET.ATG" 
+#line  2450 "VBNET.ATG" 
 				List<TypeReference> typeArguments = new List<TypeReference>(1);
 				if (typeref != null) typeArguments.Add(typeref);
 				typeref = new TypeReference("System.Nullable", typeArguments) { IsKeyword = true };
@@ -1210,27 +1210,27 @@ out f);
 	}
 
 	void InterfaceBase(
-#line  1548 "VBNET.ATG" 
+#line  1549 "VBNET.ATG" 
 out List<TypeReference> bases) {
 
-#line  1550 "VBNET.ATG" 
+#line  1551 "VBNET.ATG" 
 		TypeReference type;
 		bases = new List<TypeReference>();
 		
 		Expect(127);
 		TypeName(
-#line  1554 "VBNET.ATG" 
+#line  1555 "VBNET.ATG" 
 out type);
 
-#line  1554 "VBNET.ATG" 
+#line  1555 "VBNET.ATG" 
 		if (type != null) bases.Add(type); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			TypeName(
-#line  1557 "VBNET.ATG" 
+#line  1558 "VBNET.ATG" 
 out type);
 
-#line  1557 "VBNET.ATG" 
+#line  1558 "VBNET.ATG" 
 			if (type != null) bases.Add(type); 
 		}
 		EndOfStmt();
@@ -1257,162 +1257,162 @@ TypeDeclaration newType) {
 	}
 
 	void FormalParameterList(
-#line  2633 "VBNET.ATG" 
+#line  2634 "VBNET.ATG" 
 List<ParameterDeclarationExpression> parameter) {
 
-#line  2634 "VBNET.ATG" 
+#line  2635 "VBNET.ATG" 
 		ParameterDeclarationExpression p; 
 		FormalParameter(
-#line  2636 "VBNET.ATG" 
+#line  2637 "VBNET.ATG" 
 out p);
 
-#line  2636 "VBNET.ATG" 
+#line  2637 "VBNET.ATG" 
 		if (p != null) parameter.Add(p); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			FormalParameter(
-#line  2638 "VBNET.ATG" 
+#line  2639 "VBNET.ATG" 
 out p);
 
-#line  2638 "VBNET.ATG" 
+#line  2639 "VBNET.ATG" 
 			if (p != null) parameter.Add(p); 
 		}
 	}
 
 	void MemberModifier(
-#line  3374 "VBNET.ATG" 
+#line  3375 "VBNET.ATG" 
 ModifierList m) {
 		switch (la.kind) {
 		case 142: {
 			lexer.NextToken();
 
-#line  3375 "VBNET.ATG" 
+#line  3376 "VBNET.ATG" 
 			m.Add(Modifiers.Abstract, t.Location);
 			break;
 		}
 		case 89: {
 			lexer.NextToken();
 
-#line  3376 "VBNET.ATG" 
+#line  3377 "VBNET.ATG" 
 			m.Add(Modifiers.Default, t.Location);
 			break;
 		}
 		case 112: {
 			lexer.NextToken();
 
-#line  3377 "VBNET.ATG" 
+#line  3378 "VBNET.ATG" 
 			m.Add(Modifiers.Internal, t.Location);
 			break;
 		}
 		case 184: {
 			lexer.NextToken();
 
-#line  3378 "VBNET.ATG" 
+#line  3379 "VBNET.ATG" 
 			m.Add(Modifiers.New, t.Location);
 			break;
 		}
 		case 166: {
 			lexer.NextToken();
 
-#line  3379 "VBNET.ATG" 
+#line  3380 "VBNET.ATG" 
 			m.Add(Modifiers.Override, t.Location);
 			break;
 		}
 		case 143: {
 			lexer.NextToken();
 
-#line  3380 "VBNET.ATG" 
+#line  3381 "VBNET.ATG" 
 			m.Add(Modifiers.Abstract, t.Location);
 			break;
 		}
 		case 170: {
 			lexer.NextToken();
 
-#line  3381 "VBNET.ATG" 
+#line  3382 "VBNET.ATG" 
 			m.Add(Modifiers.Private, t.Location);
 			break;
 		}
 		case 172: {
 			lexer.NextToken();
 
-#line  3382 "VBNET.ATG" 
+#line  3383 "VBNET.ATG" 
 			m.Add(Modifiers.Protected, t.Location);
 			break;
 		}
 		case 173: {
 			lexer.NextToken();
 
-#line  3383 "VBNET.ATG" 
+#line  3384 "VBNET.ATG" 
 			m.Add(Modifiers.Public, t.Location);
 			break;
 		}
 		case 152: {
 			lexer.NextToken();
 
-#line  3384 "VBNET.ATG" 
+#line  3385 "VBNET.ATG" 
 			m.Add(Modifiers.Sealed, t.Location);
 			break;
 		}
 		case 153: {
 			lexer.NextToken();
 
-#line  3385 "VBNET.ATG" 
+#line  3386 "VBNET.ATG" 
 			m.Add(Modifiers.Sealed, t.Location);
 			break;
 		}
 		case 185: {
 			lexer.NextToken();
 
-#line  3386 "VBNET.ATG" 
+#line  3387 "VBNET.ATG" 
 			m.Add(Modifiers.Static, t.Location);
 			break;
 		}
 		case 165: {
 			lexer.NextToken();
 
-#line  3387 "VBNET.ATG" 
+#line  3388 "VBNET.ATG" 
 			m.Add(Modifiers.Virtual, t.Location);
 			break;
 		}
 		case 164: {
 			lexer.NextToken();
 
-#line  3388 "VBNET.ATG" 
+#line  3389 "VBNET.ATG" 
 			m.Add(Modifiers.Overloads, t.Location);
 			break;
 		}
 		case 175: {
 			lexer.NextToken();
 
-#line  3389 "VBNET.ATG" 
+#line  3390 "VBNET.ATG" 
 			m.Add(Modifiers.ReadOnly, t.Location);
 			break;
 		}
 		case 220: {
 			lexer.NextToken();
 
-#line  3390 "VBNET.ATG" 
+#line  3391 "VBNET.ATG" 
 			m.Add(Modifiers.WriteOnly, t.Location);
 			break;
 		}
 		case 219: {
 			lexer.NextToken();
 
-#line  3391 "VBNET.ATG" 
+#line  3392 "VBNET.ATG" 
 			m.Add(Modifiers.WithEvents, t.Location);
 			break;
 		}
 		case 92: {
 			lexer.NextToken();
 
-#line  3392 "VBNET.ATG" 
+#line  3393 "VBNET.ATG" 
 			m.Add(Modifiers.Dim, t.Location);
 			break;
 		}
 		case 168: {
 			lexer.NextToken();
 
-#line  3393 "VBNET.ATG" 
+#line  3394 "VBNET.ATG" 
 			m.Add(Modifiers.Partial, t.Location);
 			break;
 		}
@@ -1648,17 +1648,20 @@ out implementsClause);
 out handlesClause);
 				}
 			}
+
+#line  906 "VBNET.ATG" 
+			Location endLocation = t.EndLocation; 
 			if (
-#line  908 "VBNET.ATG" 
+#line  909 "VBNET.ATG" 
 IsMustOverride(m)) {
 				EndOfStmt();
 
-#line  911 "VBNET.ATG" 
+#line  912 "VBNET.ATG" 
 				methodDeclaration = new MethodDeclaration {
 				Name = name, Modifier = m.Modifier, TypeReference = type,
 				Parameters = p, Attributes = attributes,
 				StartLocation = m.GetDeclarationLocation(startPos),
-				EndLocation   = t.EndLocation,
+				EndLocation   = endLocation,
 				HandlesClause = handlesClause,
 				Templates     = templates,
 				InterfaceImplementations = implementsClause
@@ -1672,12 +1675,12 @@ IsMustOverride(m)) {
 			} else if (la.kind == 1) {
 				lexer.NextToken();
 
-#line  929 "VBNET.ATG" 
+#line  930 "VBNET.ATG" 
 				methodDeclaration = new MethodDeclaration {
 				Name = name, Modifier = m.Modifier, TypeReference = type,
 				Parameters = p, Attributes = attributes,
 				StartLocation = m.GetDeclarationLocation(startPos),
-				EndLocation   = t.EndLocation,
+				EndLocation   = endLocation,
 				Templates     = templates,
 				HandlesClause = handlesClause,
 				InterfaceImplementations = implementsClause
@@ -1690,12 +1693,12 @@ IsMustOverride(m)) {
 				compilationUnit.AddChild(methodDeclaration);
 								if (ParseMethodBodies) { 
 				Block(
-#line  946 "VBNET.ATG" 
+#line  947 "VBNET.ATG" 
 out stmt);
 				Expect(100);
 				Expect(114);
 
-#line  948 "VBNET.ATG" 
+#line  949 "VBNET.ATG" 
 				} else {
 				// don't parse method body
 				lexer.SkipCurrentBlock(Tokens.Function); stmt = new BlockStatement();
@@ -1711,7 +1714,7 @@ out stmt);
 		case 88: {
 			lexer.NextToken();
 
-#line  962 "VBNET.ATG" 
+#line  963 "VBNET.ATG" 
 			m.Check(Modifiers.VBExternalMethods);
 			Location startPos = t.Location;
 			CharsetModifier charsetModifer = CharsetModifier.None;
@@ -1721,39 +1724,39 @@ out stmt);
 			
 			if (StartOf(15)) {
 				Charset(
-#line  969 "VBNET.ATG" 
+#line  970 "VBNET.ATG" 
 out charsetModifer);
 			}
 			if (la.kind == 195) {
 				lexer.NextToken();
 				Identifier();
 
-#line  972 "VBNET.ATG" 
+#line  973 "VBNET.ATG" 
 				name = t.val; 
 				Expect(135);
 				Expect(3);
 
-#line  973 "VBNET.ATG" 
+#line  974 "VBNET.ATG" 
 				library = t.literalValue as string; 
 				if (la.kind == 46) {
 					lexer.NextToken();
 					Expect(3);
 
-#line  974 "VBNET.ATG" 
+#line  975 "VBNET.ATG" 
 					alias = t.literalValue as string; 
 				}
 				if (la.kind == 25) {
 					lexer.NextToken();
 					if (StartOf(4)) {
 						FormalParameterList(
-#line  975 "VBNET.ATG" 
+#line  976 "VBNET.ATG" 
 p);
 					}
 					Expect(26);
 				}
 				EndOfStmt();
 
-#line  978 "VBNET.ATG" 
+#line  979 "VBNET.ATG" 
 				DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, null, p, attributes, library, alias, charsetModifer);
 				declareDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
 				declareDeclaration.EndLocation   = t.EndLocation;
@@ -1763,25 +1766,25 @@ p);
 				lexer.NextToken();
 				Identifier();
 
-#line  985 "VBNET.ATG" 
+#line  986 "VBNET.ATG" 
 				name = t.val; 
 				Expect(135);
 				Expect(3);
 
-#line  986 "VBNET.ATG" 
+#line  987 "VBNET.ATG" 
 				library = t.literalValue as string; 
 				if (la.kind == 46) {
 					lexer.NextToken();
 					Expect(3);
 
-#line  987 "VBNET.ATG" 
+#line  988 "VBNET.ATG" 
 					alias = t.literalValue as string; 
 				}
 				if (la.kind == 25) {
 					lexer.NextToken();
 					if (StartOf(4)) {
 						FormalParameterList(
-#line  988 "VBNET.ATG" 
+#line  989 "VBNET.ATG" 
 p);
 					}
 					Expect(26);
@@ -1789,12 +1792,12 @@ p);
 				if (la.kind == 50) {
 					lexer.NextToken();
 					TypeName(
-#line  989 "VBNET.ATG" 
+#line  990 "VBNET.ATG" 
 out type);
 				}
 				EndOfStmt();
 
-#line  992 "VBNET.ATG" 
+#line  993 "VBNET.ATG" 
 				DeclareDeclaration declareDeclaration = new DeclareDeclaration(name, m.Modifier, type, p, attributes, library, alias, charsetModifer);
 				declareDeclaration.StartLocation = m.GetDeclarationLocation(startPos);
 				declareDeclaration.EndLocation   = t.EndLocation;
@@ -1806,7 +1809,7 @@ out type);
 		case 106: {
 			lexer.NextToken();
 
-#line  1002 "VBNET.ATG" 
+#line  1003 "VBNET.ATG" 
 			m.Check(Modifiers.VBEvents);
 			Location startPos = t.Location;
 			EventDeclaration eventDeclaration;
@@ -1815,19 +1818,19 @@ out type);
 			
 			Identifier();
 
-#line  1008 "VBNET.ATG" 
+#line  1009 "VBNET.ATG" 
 			name= t.val; 
 			if (la.kind == 50) {
 				lexer.NextToken();
 				TypeName(
-#line  1010 "VBNET.ATG" 
+#line  1011 "VBNET.ATG" 
 out type);
 			} else if (StartOf(16)) {
 				if (la.kind == 25) {
 					lexer.NextToken();
 					if (StartOf(4)) {
 						FormalParameterList(
-#line  1012 "VBNET.ATG" 
+#line  1013 "VBNET.ATG" 
 p);
 					}
 					Expect(26);
@@ -1835,11 +1838,11 @@ p);
 			} else SynErr(242);
 			if (la.kind == 123) {
 				ImplementsClause(
-#line  1014 "VBNET.ATG" 
+#line  1015 "VBNET.ATG" 
 out implementsClause);
 			}
 
-#line  1016 "VBNET.ATG" 
+#line  1017 "VBNET.ATG" 
 			eventDeclaration = new EventDeclaration {
 			Name = name, TypeReference = type, Modifier = m.Modifier, 
 			Parameters = p, Attributes = attributes, InterfaceImplementations = implementsClause,
@@ -1853,29 +1856,29 @@ out implementsClause);
 		}
 		case 2: case 45: case 49: case 51: case 52: case 53: case 54: case 57: case 74: case 91: case 94: case 103: case 108: case 113: case 120: case 126: case 130: case 133: case 156: case 162: case 169: case 188: case 197: case 198: case 208: case 209: case 215: {
 
-#line  1027 "VBNET.ATG" 
+#line  1028 "VBNET.ATG" 
 			m.Check(Modifiers.Fields);
 			FieldDeclaration fd = new FieldDeclaration(attributes, null, m.Modifier);
 			
 			IdentifierForFieldDeclaration();
 
-#line  1030 "VBNET.ATG" 
+#line  1031 "VBNET.ATG" 
 			string name = t.val; 
 
-#line  1031 "VBNET.ATG" 
+#line  1032 "VBNET.ATG" 
 			fd.StartLocation = m.GetDeclarationLocation(t.Location); 
 			VariableDeclaratorPartAfterIdentifier(
-#line  1033 "VBNET.ATG" 
+#line  1034 "VBNET.ATG" 
 variableDeclarators, name);
 			while (la.kind == 12) {
 				lexer.NextToken();
 				VariableDeclarator(
-#line  1034 "VBNET.ATG" 
+#line  1035 "VBNET.ATG" 
 variableDeclarators);
 			}
 			EndOfStmt();
 
-#line  1037 "VBNET.ATG" 
+#line  1038 "VBNET.ATG" 
 			fd.EndLocation = t.EndLocation;
 			fd.Fields = variableDeclarators;
 			compilationUnit.AddChild(fd);
@@ -1884,35 +1887,35 @@ variableDeclarators);
 		}
 		case 75: {
 
-#line  1042 "VBNET.ATG" 
+#line  1043 "VBNET.ATG" 
 			m.Check(Modifiers.Fields); 
 			lexer.NextToken();
 
-#line  1043 "VBNET.ATG" 
+#line  1044 "VBNET.ATG" 
 			m.Add(Modifiers.Const, t.Location);  
 
-#line  1045 "VBNET.ATG" 
+#line  1046 "VBNET.ATG" 
 			FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
 			fd.StartLocation = m.GetDeclarationLocation(t.Location);
 			List<VariableDeclaration> constantDeclarators = new List<VariableDeclaration>();
 			
 			ConstantDeclarator(
-#line  1049 "VBNET.ATG" 
+#line  1050 "VBNET.ATG" 
 constantDeclarators);
 			while (la.kind == 12) {
 				lexer.NextToken();
 				ConstantDeclarator(
-#line  1050 "VBNET.ATG" 
+#line  1051 "VBNET.ATG" 
 constantDeclarators);
 			}
 
-#line  1052 "VBNET.ATG" 
+#line  1053 "VBNET.ATG" 
 			fd.Fields = constantDeclarators;
 			fd.EndLocation = t.Location;
 			
 			EndOfStmt();
 
-#line  1057 "VBNET.ATG" 
+#line  1058 "VBNET.ATG" 
 			fd.EndLocation = t.EndLocation;
 			compilationUnit.AddChild(fd);
 			
@@ -1921,20 +1924,20 @@ constantDeclarators);
 		case 171: {
 			lexer.NextToken();
 
-#line  1063 "VBNET.ATG" 
+#line  1064 "VBNET.ATG" 
 			m.Check(Modifiers.VBProperties);
 			Location startPos = t.Location;
 			List<InterfaceImplementation> implementsClause = null;
 			
 			Identifier();
 
-#line  1067 "VBNET.ATG" 
+#line  1068 "VBNET.ATG" 
 			string propertyName = t.val; 
 			if (la.kind == 25) {
 				lexer.NextToken();
 				if (StartOf(4)) {
 					FormalParameterList(
-#line  1068 "VBNET.ATG" 
+#line  1069 "VBNET.ATG" 
 p);
 				}
 				Expect(26);
@@ -1942,26 +1945,26 @@ p);
 			if (la.kind == 50) {
 				lexer.NextToken();
 				TypeName(
-#line  1069 "VBNET.ATG" 
+#line  1070 "VBNET.ATG" 
 out type);
 			}
 
-#line  1071 "VBNET.ATG" 
+#line  1072 "VBNET.ATG" 
 			if(type == null) {
 			type = new TypeReference("System.Object", true);
 			}
 			
 			if (la.kind == 123) {
 				ImplementsClause(
-#line  1075 "VBNET.ATG" 
+#line  1076 "VBNET.ATG" 
 out implementsClause);
 			}
 			EndOfStmt();
 			if (
-#line  1079 "VBNET.ATG" 
+#line  1080 "VBNET.ATG" 
 IsMustOverride(m)) {
 
-#line  1081 "VBNET.ATG" 
+#line  1082 "VBNET.ATG" 
 				PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes);
 				pDecl.StartLocation = m.GetDeclarationLocation(startPos);
 				pDecl.EndLocation   = t.Location;
@@ -1972,7 +1975,7 @@ IsMustOverride(m)) {
 				
 			} else if (StartOf(17)) {
 
-#line  1091 "VBNET.ATG" 
+#line  1092 "VBNET.ATG" 
 				PropertyDeclaration pDecl = new PropertyDeclaration(propertyName, type, m.Modifier, attributes);
 				pDecl.StartLocation = m.GetDeclarationLocation(startPos);
 				pDecl.EndLocation   = t.Location;
@@ -1984,13 +1987,13 @@ IsMustOverride(m)) {
 				PropertySetRegion setRegion;
 				
 				AccessorDecls(
-#line  1101 "VBNET.ATG" 
+#line  1102 "VBNET.ATG" 
 out getRegion, out setRegion);
 				Expect(100);
 				Expect(171);
 				EndOfStmt();
 
-#line  1105 "VBNET.ATG" 
+#line  1106 "VBNET.ATG" 
 				pDecl.GetRegion = getRegion;
 				pDecl.SetRegion = setRegion;
 				pDecl.BodyEnd = t.EndLocation;
@@ -2002,11 +2005,11 @@ out getRegion, out setRegion);
 		case 85: {
 			lexer.NextToken();
 
-#line  1112 "VBNET.ATG" 
+#line  1113 "VBNET.ATG" 
 			Location startPos = t.Location; 
 			Expect(106);
 
-#line  1114 "VBNET.ATG" 
+#line  1115 "VBNET.ATG" 
 			m.Check(Modifiers.VBCustomEvents);
 			EventAddRemoveRegion eventAccessorDeclaration;
 			EventAddRegion addHandlerAccessorDeclaration = null;
@@ -2016,24 +2019,24 @@ out getRegion, out setRegion);
 			
 			Identifier();
 
-#line  1121 "VBNET.ATG" 
+#line  1122 "VBNET.ATG" 
 			string customEventName = t.val; 
 			Expect(50);
 			TypeName(
-#line  1122 "VBNET.ATG" 
+#line  1123 "VBNET.ATG" 
 out type);
 			if (la.kind == 123) {
 				ImplementsClause(
-#line  1123 "VBNET.ATG" 
+#line  1124 "VBNET.ATG" 
 out implementsClause);
 			}
 			EndOfStmt();
 			while (StartOf(18)) {
 				EventAccessorDeclaration(
-#line  1126 "VBNET.ATG" 
+#line  1127 "VBNET.ATG" 
 out eventAccessorDeclaration);
 
-#line  1128 "VBNET.ATG" 
+#line  1129 "VBNET.ATG" 
 				if(eventAccessorDeclaration is EventAddRegion)
 				{
 					addHandlerAccessorDeclaration = (EventAddRegion)eventAccessorDeclaration;
@@ -2052,7 +2055,7 @@ out eventAccessorDeclaration);
 			Expect(106);
 			EndOfStmt();
 
-#line  1144 "VBNET.ATG" 
+#line  1145 "VBNET.ATG" 
 			if(addHandlerAccessorDeclaration == null)
 			{
 				Error("Need to provide AddHandler accessor.");
@@ -2082,24 +2085,24 @@ out eventAccessorDeclaration);
 		}
 		case 147: case 158: case 217: {
 
-#line  1170 "VBNET.ATG" 
+#line  1171 "VBNET.ATG" 
 			ConversionType opConversionType = ConversionType.None; 
 			if (la.kind == 147 || la.kind == 217) {
 				if (la.kind == 217) {
 					lexer.NextToken();
 
-#line  1171 "VBNET.ATG" 
+#line  1172 "VBNET.ATG" 
 					opConversionType = ConversionType.Implicit; 
 				} else {
 					lexer.NextToken();
 
-#line  1172 "VBNET.ATG" 
+#line  1173 "VBNET.ATG" 
 					opConversionType = ConversionType.Explicit;
 				}
 			}
 			Expect(158);
 
-#line  1175 "VBNET.ATG" 
+#line  1176 "VBNET.ATG" 
 			m.Check(Modifiers.VBOperators);
 			Location startPos = t.Location;
 			TypeReference returnType = NullTypeReference.Instance;
@@ -2111,7 +2114,7 @@ out eventAccessorDeclaration);
 			List<AttributeSection> returnTypeAttributes = new List<AttributeSection>();
 			
 			OverloadableOperator(
-#line  1185 "VBNET.ATG" 
+#line  1186 "VBNET.ATG" 
 out operatorType);
 			Expect(25);
 			if (la.kind == 59) {
@@ -2119,16 +2122,16 @@ out operatorType);
 			}
 			Identifier();
 
-#line  1186 "VBNET.ATG" 
+#line  1187 "VBNET.ATG" 
 			operandName = t.val; 
 			if (la.kind == 50) {
 				lexer.NextToken();
 				TypeName(
-#line  1187 "VBNET.ATG" 
+#line  1188 "VBNET.ATG" 
 out operandType);
 			}
 
-#line  1188 "VBNET.ATG" 
+#line  1189 "VBNET.ATG" 
 			parameters.Add(new ParameterDeclarationExpression(operandType, operandName, ParameterModifiers.In)); 
 			while (la.kind == 12) {
 				lexer.NextToken();
@@ -2137,48 +2140,48 @@ out operandType);
 				}
 				Identifier();
 
-#line  1192 "VBNET.ATG" 
+#line  1193 "VBNET.ATG" 
 				operandName = t.val; 
 				if (la.kind == 50) {
 					lexer.NextToken();
 					TypeName(
-#line  1193 "VBNET.ATG" 
+#line  1194 "VBNET.ATG" 
 out operandType);
 				}
 
-#line  1194 "VBNET.ATG" 
+#line  1195 "VBNET.ATG" 
 				parameters.Add(new ParameterDeclarationExpression(operandType, operandName, ParameterModifiers.In)); 
 			}
 			Expect(26);
 
-#line  1197 "VBNET.ATG" 
+#line  1198 "VBNET.ATG" 
 			Location endPos = t.EndLocation; 
 			if (la.kind == 50) {
 				lexer.NextToken();
 				while (la.kind == 28) {
 					AttributeSection(
-#line  1198 "VBNET.ATG" 
+#line  1199 "VBNET.ATG" 
 out section);
 
-#line  1198 "VBNET.ATG" 
+#line  1199 "VBNET.ATG" 
 					returnTypeAttributes.Add(section); 
 				}
 				TypeName(
-#line  1198 "VBNET.ATG" 
+#line  1199 "VBNET.ATG" 
 out returnType);
 
-#line  1198 "VBNET.ATG" 
+#line  1199 "VBNET.ATG" 
 				endPos = t.EndLocation; 
 			}
 			Expect(1);
 			Block(
-#line  1200 "VBNET.ATG" 
+#line  1201 "VBNET.ATG" 
 out stmt);
 			Expect(100);
 			Expect(158);
 			EndOfStmt();
 
-#line  1202 "VBNET.ATG" 
+#line  1203 "VBNET.ATG" 
 			OperatorDeclaration operatorDeclaration = new OperatorDeclaration {
 			Modifier = m.Modifier,
 			Attributes = attributes,
@@ -2440,107 +2443,107 @@ mod, attributes);
 	}
 
 	void Expr(
-#line  1607 "VBNET.ATG" 
+#line  1608 "VBNET.ATG" 
 out Expression expr) {
 
-#line  1608 "VBNET.ATG" 
+#line  1609 "VBNET.ATG" 
 		expr = null; 
 		if (
-#line  1609 "VBNET.ATG" 
+#line  1610 "VBNET.ATG" 
 IsQueryExpression() ) {
 			QueryExpr(
-#line  1610 "VBNET.ATG" 
+#line  1611 "VBNET.ATG" 
 out expr);
 		} else if (la.kind == 114) {
 			LambdaExpr(
-#line  1611 "VBNET.ATG" 
+#line  1612 "VBNET.ATG" 
 out expr);
 		} else if (StartOf(21)) {
 			DisjunctionExpr(
-#line  1612 "VBNET.ATG" 
+#line  1613 "VBNET.ATG" 
 out expr);
 		} else SynErr(247);
 	}
 
 	void ImplementsClause(
-#line  1580 "VBNET.ATG" 
+#line  1581 "VBNET.ATG" 
 out List<InterfaceImplementation> baseInterfaces) {
 
-#line  1582 "VBNET.ATG" 
+#line  1583 "VBNET.ATG" 
 		baseInterfaces = new List<InterfaceImplementation>();
 		TypeReference type = null;
 		string memberName = null;
 		
 		Expect(123);
 		NonArrayTypeName(
-#line  1587 "VBNET.ATG" 
+#line  1588 "VBNET.ATG" 
 out type, false);
 
-#line  1588 "VBNET.ATG" 
+#line  1589 "VBNET.ATG" 
 		if (type != null) memberName = TypeReference.StripLastIdentifierFromType(ref type); 
 
-#line  1589 "VBNET.ATG" 
+#line  1590 "VBNET.ATG" 
 		baseInterfaces.Add(new InterfaceImplementation(type, memberName)); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			NonArrayTypeName(
-#line  1591 "VBNET.ATG" 
+#line  1592 "VBNET.ATG" 
 out type, false);
 
-#line  1592 "VBNET.ATG" 
+#line  1593 "VBNET.ATG" 
 			if (type != null) memberName = TypeReference.StripLastIdentifierFromType(ref type); 
 
-#line  1593 "VBNET.ATG" 
+#line  1594 "VBNET.ATG" 
 			baseInterfaces.Add(new InterfaceImplementation(type, memberName)); 
 		}
 	}
 
 	void HandlesClause(
-#line  1538 "VBNET.ATG" 
+#line  1539 "VBNET.ATG" 
 out List<string> handlesClause) {
 
-#line  1540 "VBNET.ATG" 
+#line  1541 "VBNET.ATG" 
 		handlesClause = new List<string>();
 		string name;
 		
 		Expect(121);
 		EventMemberSpecifier(
-#line  1543 "VBNET.ATG" 
+#line  1544 "VBNET.ATG" 
 out name);
 
-#line  1543 "VBNET.ATG" 
+#line  1544 "VBNET.ATG" 
 		if (name != null) handlesClause.Add(name); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			EventMemberSpecifier(
-#line  1544 "VBNET.ATG" 
+#line  1545 "VBNET.ATG" 
 out name);
 
-#line  1544 "VBNET.ATG" 
+#line  1545 "VBNET.ATG" 
 			if (name != null) handlesClause.Add(name); 
 		}
 	}
 
 	void Block(
-#line  2680 "VBNET.ATG" 
+#line  2681 "VBNET.ATG" 
 out Statement stmt) {
 
-#line  2683 "VBNET.ATG" 
+#line  2684 "VBNET.ATG" 
 		BlockStatement blockStmt = new BlockStatement();
 		/* in snippet parsing mode, t might be null */
 		if (t != null) blockStmt.StartLocation = t.EndLocation;
 		compilationUnit.BlockStart(blockStmt);
 		
 		while (StartOf(22) || 
-#line  2689 "VBNET.ATG" 
+#line  2690 "VBNET.ATG" 
 IsEndStmtAhead()) {
 			if (
-#line  2689 "VBNET.ATG" 
+#line  2690 "VBNET.ATG" 
 IsEndStmtAhead()) {
 				Expect(100);
 				EndOfStmt();
 
-#line  2689 "VBNET.ATG" 
+#line  2690 "VBNET.ATG" 
 				compilationUnit.AddChild(new EndStatement()); 
 			} else {
 				Statement();
@@ -2548,7 +2551,7 @@ IsEndStmtAhead()) {
 			}
 		}
 
-#line  2694 "VBNET.ATG" 
+#line  2695 "VBNET.ATG" 
 		stmt = blockStmt;
 		if (t != null) blockStmt.EndLocation = t.EndLocation;
 		compilationUnit.BlockEnd();
@@ -2556,26 +2559,26 @@ IsEndStmtAhead()) {
 	}
 
 	void Charset(
-#line  1530 "VBNET.ATG" 
+#line  1531 "VBNET.ATG" 
 out CharsetModifier charsetModifier) {
 
-#line  1531 "VBNET.ATG" 
+#line  1532 "VBNET.ATG" 
 		charsetModifier = CharsetModifier.None; 
 		if (la.kind == 114 || la.kind == 195) {
 		} else if (la.kind == 49) {
 			lexer.NextToken();
 
-#line  1532 "VBNET.ATG" 
+#line  1533 "VBNET.ATG" 
 			charsetModifier = CharsetModifier.Ansi; 
 		} else if (la.kind == 53) {
 			lexer.NextToken();
 
-#line  1533 "VBNET.ATG" 
+#line  1534 "VBNET.ATG" 
 			charsetModifier = CharsetModifier.Auto; 
 		} else if (la.kind == 208) {
 			lexer.NextToken();
 
-#line  1534 "VBNET.ATG" 
+#line  1535 "VBNET.ATG" 
 			charsetModifier = CharsetModifier.Unicode; 
 		} else SynErr(248);
 	}
@@ -2695,10 +2698,10 @@ out CharsetModifier charsetModifier) {
 	}
 
 	void VariableDeclaratorPartAfterIdentifier(
-#line  1406 "VBNET.ATG" 
+#line  1407 "VBNET.ATG" 
 List<VariableDeclaration> fieldDeclaration, string name) {
 
-#line  1408 "VBNET.ATG" 
+#line  1409 "VBNET.ATG" 
 		Expression expr = null;
 		TypeReference type = null;
 		ArrayList rank = null;
@@ -2706,28 +2709,28 @@ List<VariableDeclaration> fieldDeclaration, string name) {
 		Location startLocation = t.Location;
 		
 		if (
-#line  1414 "VBNET.ATG" 
+#line  1415 "VBNET.ATG" 
 IsSize() && !IsDims()) {
 			ArrayInitializationModifier(
-#line  1414 "VBNET.ATG" 
+#line  1415 "VBNET.ATG" 
 out dimension);
 		}
 		if (
-#line  1415 "VBNET.ATG" 
+#line  1416 "VBNET.ATG" 
 IsDims()) {
 			ArrayNameModifier(
-#line  1415 "VBNET.ATG" 
+#line  1416 "VBNET.ATG" 
 out rank);
 		}
 		if (
-#line  1417 "VBNET.ATG" 
+#line  1418 "VBNET.ATG" 
 IsObjectCreation()) {
 			Expect(50);
 			ObjectCreateExpression(
-#line  1417 "VBNET.ATG" 
+#line  1418 "VBNET.ATG" 
 out expr);
 
-#line  1419 "VBNET.ATG" 
+#line  1420 "VBNET.ATG" 
 			if (expr is ObjectCreateExpression) {
 			type = ((ObjectCreateExpression)expr).CreateType.Clone();
 			} else {
@@ -2738,10 +2741,10 @@ out expr);
 			if (la.kind == 50) {
 				lexer.NextToken();
 				TypeName(
-#line  1426 "VBNET.ATG" 
+#line  1427 "VBNET.ATG" 
 out type);
 
-#line  1428 "VBNET.ATG" 
+#line  1429 "VBNET.ATG" 
 				if (type != null) {
 				for (int i = fieldDeclaration.Count - 1; i >= 0; i--) {
 					VariableDeclaration vd = fieldDeclaration[i];
@@ -2754,7 +2757,7 @@ out type);
 				 
 			}
 
-#line  1440 "VBNET.ATG" 
+#line  1441 "VBNET.ATG" 
 			if (type == null && (dimension != null || rank != null)) {
 			type = new TypeReference("");
 			}
@@ -2781,12 +2784,12 @@ out type);
 			if (la.kind == 10) {
 				lexer.NextToken();
 				VariableInitializer(
-#line  1463 "VBNET.ATG" 
+#line  1464 "VBNET.ATG" 
 out expr);
 			}
 		} else SynErr(250);
 
-#line  1466 "VBNET.ATG" 
+#line  1467 "VBNET.ATG" 
 		VariableDeclaration varDecl = new VariableDeclaration(name, expr, type);
 		varDecl.StartLocation = startLocation;
 		varDecl.EndLocation = t.Location;
@@ -2795,22 +2798,22 @@ out expr);
 	}
 
 	void VariableDeclarator(
-#line  1400 "VBNET.ATG" 
+#line  1401 "VBNET.ATG" 
 List<VariableDeclaration> fieldDeclaration) {
 		Identifier();
 
-#line  1402 "VBNET.ATG" 
+#line  1403 "VBNET.ATG" 
 		string name = t.val; 
 		VariableDeclaratorPartAfterIdentifier(
-#line  1403 "VBNET.ATG" 
+#line  1404 "VBNET.ATG" 
 fieldDeclaration, name);
 	}
 
 	void ConstantDeclarator(
-#line  1381 "VBNET.ATG" 
+#line  1382 "VBNET.ATG" 
 List<VariableDeclaration> constantDeclaration) {
 
-#line  1383 "VBNET.ATG" 
+#line  1384 "VBNET.ATG" 
 		Expression expr = null;
 		TypeReference type = null;
 		string name = String.Empty;
@@ -2818,20 +2821,20 @@ List<VariableDeclaration> constantDeclaration) {
 		
 		Identifier();
 
-#line  1388 "VBNET.ATG" 
+#line  1389 "VBNET.ATG" 
 		name = t.val; location = t.Location; 
 		if (la.kind == 50) {
 			lexer.NextToken();
 			TypeName(
-#line  1389 "VBNET.ATG" 
+#line  1390 "VBNET.ATG" 
 out type);
 		}
 		Expect(10);
 		Expr(
-#line  1390 "VBNET.ATG" 
+#line  1391 "VBNET.ATG" 
 out expr);
 
-#line  1392 "VBNET.ATG" 
+#line  1393 "VBNET.ATG" 
 		VariableDeclaration f = new VariableDeclaration(name, expr);
 		f.TypeReference = type;
 		f.StartLocation = location;
@@ -2840,10 +2843,10 @@ out expr);
 	}
 
 	void AccessorDecls(
-#line  1315 "VBNET.ATG" 
+#line  1316 "VBNET.ATG" 
 out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
 
-#line  1317 "VBNET.ATG" 
+#line  1318 "VBNET.ATG" 
 		List<AttributeSection> attributes = new List<AttributeSection>();
 		AttributeSection section;
 		getBlock = null;
@@ -2851,60 +2854,60 @@ out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
 		
 		while (la.kind == 28) {
 			AttributeSection(
-#line  1322 "VBNET.ATG" 
+#line  1323 "VBNET.ATG" 
 out section);
 
-#line  1322 "VBNET.ATG" 
+#line  1323 "VBNET.ATG" 
 			attributes.Add(section); 
 		}
 		if (StartOf(24)) {
 			GetAccessorDecl(
-#line  1324 "VBNET.ATG" 
+#line  1325 "VBNET.ATG" 
 out getBlock, attributes);
 			if (StartOf(25)) {
 
-#line  1326 "VBNET.ATG" 
+#line  1327 "VBNET.ATG" 
 				attributes = new List<AttributeSection>(); 
 				while (la.kind == 28) {
 					AttributeSection(
-#line  1327 "VBNET.ATG" 
+#line  1328 "VBNET.ATG" 
 out section);
 
-#line  1327 "VBNET.ATG" 
+#line  1328 "VBNET.ATG" 
 					attributes.Add(section); 
 				}
 				SetAccessorDecl(
-#line  1328 "VBNET.ATG" 
+#line  1329 "VBNET.ATG" 
 out setBlock, attributes);
 			}
 		} else if (StartOf(26)) {
 			SetAccessorDecl(
-#line  1331 "VBNET.ATG" 
+#line  1332 "VBNET.ATG" 
 out setBlock, attributes);
 			if (StartOf(27)) {
 
-#line  1333 "VBNET.ATG" 
+#line  1334 "VBNET.ATG" 
 				attributes = new List<AttributeSection>(); 
 				while (la.kind == 28) {
 					AttributeSection(
-#line  1334 "VBNET.ATG" 
+#line  1335 "VBNET.ATG" 
 out section);
 
-#line  1334 "VBNET.ATG" 
+#line  1335 "VBNET.ATG" 
 					attributes.Add(section); 
 				}
 				GetAccessorDecl(
-#line  1335 "VBNET.ATG" 
+#line  1336 "VBNET.ATG" 
 out getBlock, attributes);
 			}
 		} else SynErr(251);
 	}
 
 	void EventAccessorDeclaration(
-#line  1278 "VBNET.ATG" 
+#line  1279 "VBNET.ATG" 
 out EventAddRemoveRegion eventAccessorDeclaration) {
 
-#line  1280 "VBNET.ATG" 
+#line  1281 "VBNET.ATG" 
 		Statement stmt = null;
 		List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>();
 		AttributeSection section;
@@ -2913,10 +2916,10 @@ out EventAddRemoveRegion eventAccessorDeclaration) {
 		
 		while (la.kind == 28) {
 			AttributeSection(
-#line  1286 "VBNET.ATG" 
+#line  1287 "VBNET.ATG" 
 out section);
 
-#line  1286 "VBNET.ATG" 
+#line  1287 "VBNET.ATG" 
 			attributes.Add(section); 
 		}
 		if (la.kind == 43) {
@@ -2925,20 +2928,20 @@ out section);
 				lexer.NextToken();
 				if (StartOf(4)) {
 					FormalParameterList(
-#line  1288 "VBNET.ATG" 
+#line  1289 "VBNET.ATG" 
 p);
 				}
 				Expect(26);
 			}
 			Expect(1);
 			Block(
-#line  1289 "VBNET.ATG" 
+#line  1290 "VBNET.ATG" 
 out stmt);
 			Expect(100);
 			Expect(43);
 			EndOfStmt();
 
-#line  1291 "VBNET.ATG" 
+#line  1292 "VBNET.ATG" 
 			eventAccessorDeclaration = new EventAddRegion(attributes);
 			eventAccessorDeclaration.Block = (BlockStatement)stmt;
 			eventAccessorDeclaration.Parameters = p;
@@ -2949,20 +2952,20 @@ out stmt);
 				lexer.NextToken();
 				if (StartOf(4)) {
 					FormalParameterList(
-#line  1296 "VBNET.ATG" 
+#line  1297 "VBNET.ATG" 
 p);
 				}
 				Expect(26);
 			}
 			Expect(1);
 			Block(
-#line  1297 "VBNET.ATG" 
+#line  1298 "VBNET.ATG" 
 out stmt);
 			Expect(100);
 			Expect(178);
 			EndOfStmt();
 
-#line  1299 "VBNET.ATG" 
+#line  1300 "VBNET.ATG" 
 			eventAccessorDeclaration = new EventRemoveRegion(attributes);
 			eventAccessorDeclaration.Block = (BlockStatement)stmt;
 			eventAccessorDeclaration.Parameters = p;
@@ -2973,20 +2976,20 @@ out stmt);
 				lexer.NextToken();
 				if (StartOf(4)) {
 					FormalParameterList(
-#line  1304 "VBNET.ATG" 
+#line  1305 "VBNET.ATG" 
 p);
 				}
 				Expect(26);
 			}
 			Expect(1);
 			Block(
-#line  1305 "VBNET.ATG" 
+#line  1306 "VBNET.ATG" 
 out stmt);
 			Expect(100);
 			Expect(174);
 			EndOfStmt();
 
-#line  1307 "VBNET.ATG" 
+#line  1308 "VBNET.ATG" 
 			eventAccessorDeclaration = new EventRaiseRegion(attributes);
 			eventAccessorDeclaration.Block = (BlockStatement)stmt;
 			eventAccessorDeclaration.Parameters = p;
@@ -2995,163 +2998,163 @@ out stmt);
 	}
 
 	void OverloadableOperator(
-#line  1220 "VBNET.ATG" 
+#line  1221 "VBNET.ATG" 
 out OverloadableOperatorType operatorType) {
 
-#line  1221 "VBNET.ATG" 
+#line  1222 "VBNET.ATG" 
 		operatorType = OverloadableOperatorType.None; 
 		switch (la.kind) {
 		case 19: {
 			lexer.NextToken();
 
-#line  1223 "VBNET.ATG" 
+#line  1224 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Add; 
 			break;
 		}
 		case 18: {
 			lexer.NextToken();
 
-#line  1225 "VBNET.ATG" 
+#line  1226 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Subtract; 
 			break;
 		}
 		case 22: {
 			lexer.NextToken();
 
-#line  1227 "VBNET.ATG" 
+#line  1228 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Multiply; 
 			break;
 		}
 		case 14: {
 			lexer.NextToken();
 
-#line  1229 "VBNET.ATG" 
+#line  1230 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Divide; 
 			break;
 		}
 		case 15: {
 			lexer.NextToken();
 
-#line  1231 "VBNET.ATG" 
+#line  1232 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.DivideInteger; 
 			break;
 		}
 		case 13: {
 			lexer.NextToken();
 
-#line  1233 "VBNET.ATG" 
+#line  1234 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Concat; 
 			break;
 		}
 		case 136: {
 			lexer.NextToken();
 
-#line  1235 "VBNET.ATG" 
+#line  1236 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Like; 
 			break;
 		}
 		case 140: {
 			lexer.NextToken();
 
-#line  1237 "VBNET.ATG" 
+#line  1238 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Modulus; 
 			break;
 		}
 		case 47: {
 			lexer.NextToken();
 
-#line  1239 "VBNET.ATG" 
+#line  1240 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.BitwiseAnd; 
 			break;
 		}
 		case 161: {
 			lexer.NextToken();
 
-#line  1241 "VBNET.ATG" 
+#line  1242 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.BitwiseOr; 
 			break;
 		}
 		case 221: {
 			lexer.NextToken();
 
-#line  1243 "VBNET.ATG" 
+#line  1244 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.ExclusiveOr; 
 			break;
 		}
 		case 20: {
 			lexer.NextToken();
 
-#line  1245 "VBNET.ATG" 
+#line  1246 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Power; 
 			break;
 		}
 		case 32: {
 			lexer.NextToken();
 
-#line  1247 "VBNET.ATG" 
+#line  1248 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.ShiftLeft; 
 			break;
 		}
 		case 33: {
 			lexer.NextToken();
 
-#line  1249 "VBNET.ATG" 
+#line  1250 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.ShiftRight; 
 			break;
 		}
 		case 10: {
 			lexer.NextToken();
 
-#line  1251 "VBNET.ATG" 
+#line  1252 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.Equality; 
 			break;
 		}
 		case 29: {
 			lexer.NextToken();
 
-#line  1253 "VBNET.ATG" 
+#line  1254 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.InEquality; 
 			break;
 		}
 		case 28: {
 			lexer.NextToken();
 
-#line  1255 "VBNET.ATG" 
+#line  1256 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.LessThan; 
 			break;
 		}
 		case 31: {
 			lexer.NextToken();
 
-#line  1257 "VBNET.ATG" 
+#line  1258 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.LessThanOrEqual; 
 			break;
 		}
 		case 27: {
 			lexer.NextToken();
 
-#line  1259 "VBNET.ATG" 
+#line  1260 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.GreaterThan; 
 			break;
 		}
 		case 30: {
 			lexer.NextToken();
 
-#line  1261 "VBNET.ATG" 
+#line  1262 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.GreaterThanOrEqual; 
 			break;
 		}
 		case 81: {
 			lexer.NextToken();
 
-#line  1263 "VBNET.ATG" 
+#line  1264 "VBNET.ATG" 
 			operatorType = OverloadableOperatorType.CType; 
 			break;
 		}
 		case 2: case 45: case 49: case 51: case 52: case 53: case 54: case 57: case 74: case 85: case 91: case 94: case 103: case 108: case 113: case 120: case 126: case 130: case 133: case 156: case 162: case 169: case 188: case 197: case 198: case 208: case 209: case 215: {
 			Identifier();
 
-#line  1267 "VBNET.ATG" 
+#line  1268 "VBNET.ATG" 
 			string opName = t.val; 
 			if (string.Equals(opName, "istrue", StringComparison.InvariantCultureIgnoreCase)) {
 				operatorType = OverloadableOperatorType.IsTrue;
@@ -3168,67 +3171,67 @@ out OverloadableOperatorType operatorType) {
 	}
 
 	void GetAccessorDecl(
-#line  1341 "VBNET.ATG" 
+#line  1342 "VBNET.ATG" 
 out PropertyGetRegion getBlock, List<AttributeSection> attributes) {
 
-#line  1342 "VBNET.ATG" 
+#line  1343 "VBNET.ATG" 
 		Statement stmt = null; Modifiers m; 
 		PropertyAccessorAccessModifier(
-#line  1344 "VBNET.ATG" 
+#line  1345 "VBNET.ATG" 
 out m);
 		Expect(115);
 
-#line  1346 "VBNET.ATG" 
+#line  1347 "VBNET.ATG" 
 		Location startLocation = t.Location; 
 		Expect(1);
 		Block(
-#line  1348 "VBNET.ATG" 
+#line  1349 "VBNET.ATG" 
 out stmt);
 
-#line  1349 "VBNET.ATG" 
+#line  1350 "VBNET.ATG" 
 		getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes); 
 		Expect(100);
 		Expect(115);
 
-#line  1351 "VBNET.ATG" 
+#line  1352 "VBNET.ATG" 
 		getBlock.Modifier = m; 
 
-#line  1352 "VBNET.ATG" 
+#line  1353 "VBNET.ATG" 
 		getBlock.StartLocation = startLocation; getBlock.EndLocation = t.EndLocation; 
 		EndOfStmt();
 	}
 
 	void SetAccessorDecl(
-#line  1357 "VBNET.ATG" 
+#line  1358 "VBNET.ATG" 
 out PropertySetRegion setBlock, List<AttributeSection> attributes) {
 
-#line  1359 "VBNET.ATG" 
+#line  1360 "VBNET.ATG" 
 		Statement stmt = null;
 		List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>();
 		Modifiers m;
 		
 		PropertyAccessorAccessModifier(
-#line  1364 "VBNET.ATG" 
+#line  1365 "VBNET.ATG" 
 out m);
 		Expect(183);
 
-#line  1366 "VBNET.ATG" 
+#line  1367 "VBNET.ATG" 
 		Location startLocation = t.Location; 
 		if (la.kind == 25) {
 			lexer.NextToken();
 			if (StartOf(4)) {
 				FormalParameterList(
-#line  1367 "VBNET.ATG" 
+#line  1368 "VBNET.ATG" 
 p);
 			}
 			Expect(26);
 		}
 		Expect(1);
 		Block(
-#line  1369 "VBNET.ATG" 
+#line  1370 "VBNET.ATG" 
 out stmt);
 
-#line  1371 "VBNET.ATG" 
+#line  1372 "VBNET.ATG" 
 		setBlock = new PropertySetRegion((BlockStatement)stmt, attributes);
 		setBlock.Modifier = m;
 		setBlock.Parameters = p;
@@ -3236,73 +3239,73 @@ out stmt);
 		Expect(100);
 		Expect(183);
 
-#line  1376 "VBNET.ATG" 
+#line  1377 "VBNET.ATG" 
 		setBlock.StartLocation = startLocation; setBlock.EndLocation = t.EndLocation; 
 		EndOfStmt();
 	}
 
 	void PropertyAccessorAccessModifier(
-#line  3396 "VBNET.ATG" 
+#line  3397 "VBNET.ATG" 
 out Modifiers m) {
 
-#line  3397 "VBNET.ATG" 
+#line  3398 "VBNET.ATG" 
 		m = Modifiers.None; 
 		while (StartOf(28)) {
 			if (la.kind == 173) {
 				lexer.NextToken();
 
-#line  3399 "VBNET.ATG" 
+#line  3400 "VBNET.ATG" 
 				m |= Modifiers.Public; 
 			} else if (la.kind == 172) {
 				lexer.NextToken();
 
-#line  3400 "VBNET.ATG" 
+#line  3401 "VBNET.ATG" 
 				m |= Modifiers.Protected; 
 			} else if (la.kind == 112) {
 				lexer.NextToken();
 
-#line  3401 "VBNET.ATG" 
+#line  3402 "VBNET.ATG" 
 				m |= Modifiers.Internal; 
 			} else {
 				lexer.NextToken();
 
-#line  3402 "VBNET.ATG" 
+#line  3403 "VBNET.ATG" 
 				m |= Modifiers.Private; 
 			}
 		}
 	}
 
 	void ArrayInitializationModifier(
-#line  1474 "VBNET.ATG" 
+#line  1475 "VBNET.ATG" 
 out List<Expression> arrayModifiers) {
 
-#line  1476 "VBNET.ATG" 
+#line  1477 "VBNET.ATG" 
 		arrayModifiers = null;
 		
 		Expect(25);
 		InitializationRankList(
-#line  1478 "VBNET.ATG" 
+#line  1479 "VBNET.ATG" 
 out arrayModifiers);
 		Expect(26);
 	}
 
 	void ArrayNameModifier(
-#line  2473 "VBNET.ATG" 
+#line  2474 "VBNET.ATG" 
 out ArrayList arrayModifiers) {
 
-#line  2475 "VBNET.ATG" 
+#line  2476 "VBNET.ATG" 
 		arrayModifiers = null;
 		
 		ArrayTypeModifiers(
-#line  2477 "VBNET.ATG" 
+#line  2478 "VBNET.ATG" 
 out arrayModifiers);
 	}
 
 	void ObjectCreateExpression(
-#line  1935 "VBNET.ATG" 
+#line  1936 "VBNET.ATG" 
 out Expression oce) {
 
-#line  1937 "VBNET.ATG" 
+#line  1938 "VBNET.ATG" 
 		TypeReference type = null;
 		Expression initializer = null;
 		List<Expression> arguments = null;
@@ -3313,39 +3316,39 @@ out Expression oce) {
 		Expect(148);
 		if (StartOf(7)) {
 			NonArrayTypeName(
-#line  1945 "VBNET.ATG" 
+#line  1946 "VBNET.ATG" 
 out type, false);
 			if (la.kind == 25) {
 				lexer.NextToken();
 				NormalOrReDimArgumentList(
-#line  1946 "VBNET.ATG" 
+#line  1947 "VBNET.ATG" 
 out arguments, out canBeNormal, out canBeReDim);
 				Expect(26);
 				if (la.kind == 23 || 
-#line  1947 "VBNET.ATG" 
+#line  1948 "VBNET.ATG" 
 la.kind == Tokens.OpenParenthesis) {
 					if (
-#line  1947 "VBNET.ATG" 
+#line  1948 "VBNET.ATG" 
 la.kind == Tokens.OpenParenthesis) {
 						ArrayTypeModifiers(
-#line  1948 "VBNET.ATG" 
+#line  1949 "VBNET.ATG" 
 out dimensions);
 						CollectionInitializer(
-#line  1949 "VBNET.ATG" 
+#line  1950 "VBNET.ATG" 
 out initializer);
 					} else {
 						CollectionInitializer(
-#line  1950 "VBNET.ATG" 
+#line  1951 "VBNET.ATG" 
 out initializer);
 					}
 				}
 
-#line  1952 "VBNET.ATG" 
+#line  1953 "VBNET.ATG" 
 				if (canBeReDim && !canBeNormal && initializer == null) initializer = new CollectionInitializerExpression(); 
 			}
 		}
 
-#line  1956 "VBNET.ATG" 
+#line  1957 "VBNET.ATG" 
 		if (initializer == null) {
 		oce = new ObjectCreateExpression(type, arguments);
 		} else {
@@ -3359,34 +3362,34 @@ out initializer);
 		
 		if (la.kind == 218) {
 
-#line  1970 "VBNET.ATG" 
+#line  1971 "VBNET.ATG" 
 			NamedArgumentExpression memberInitializer = null;
 			
 			lexer.NextToken();
 
-#line  1974 "VBNET.ATG" 
+#line  1975 "VBNET.ATG" 
 			CollectionInitializerExpression memberInitializers = new CollectionInitializerExpression();
 			memberInitializers.StartLocation = la.Location;
 			
 			Expect(23);
 			MemberInitializer(
-#line  1978 "VBNET.ATG" 
+#line  1979 "VBNET.ATG" 
 out memberInitializer);
 
-#line  1979 "VBNET.ATG" 
+#line  1980 "VBNET.ATG" 
 			memberInitializers.CreateExpressions.Add(memberInitializer); 
 			while (la.kind == 12) {
 				lexer.NextToken();
 				MemberInitializer(
-#line  1981 "VBNET.ATG" 
+#line  1982 "VBNET.ATG" 
 out memberInitializer);
 
-#line  1982 "VBNET.ATG" 
+#line  1983 "VBNET.ATG" 
 				memberInitializers.CreateExpressions.Add(memberInitializer); 
 			}
 			Expect(24);
 
-#line  1986 "VBNET.ATG" 
+#line  1987 "VBNET.ATG" 
 			memberInitializers.EndLocation = t.Location;
 			if(oce is ObjectCreateExpression)
 			{
@@ -3397,106 +3400,106 @@ out memberInitializer);
 	}
 
 	void VariableInitializer(
-#line  1502 "VBNET.ATG" 
+#line  1503 "VBNET.ATG" 
 out Expression initializerExpression) {
 
-#line  1504 "VBNET.ATG" 
+#line  1505 "VBNET.ATG" 
 		initializerExpression = null;
 		
 		if (StartOf(29)) {
 			Expr(
-#line  1506 "VBNET.ATG" 
+#line  1507 "VBNET.ATG" 
 out initializerExpression);
 		} else if (la.kind == 23) {
 			CollectionInitializer(
-#line  1507 "VBNET.ATG" 
+#line  1508 "VBNET.ATG" 
 out initializerExpression);
 		} else SynErr(254);
 	}
 
 	void InitializationRankList(
-#line  1482 "VBNET.ATG" 
+#line  1483 "VBNET.ATG" 
 out List<Expression> rank) {
 
-#line  1484 "VBNET.ATG" 
+#line  1485 "VBNET.ATG" 
 		rank = new List<Expression>();
 		Expression expr = null;
 		
 		Expr(
-#line  1487 "VBNET.ATG" 
+#line  1488 "VBNET.ATG" 
 out expr);
 		if (la.kind == 201) {
 			lexer.NextToken();
 
-#line  1488 "VBNET.ATG" 
+#line  1489 "VBNET.ATG" 
 			EnsureIsZero(expr); 
 			Expr(
-#line  1489 "VBNET.ATG" 
+#line  1490 "VBNET.ATG" 
 out expr);
 		}
 
-#line  1491 "VBNET.ATG" 
+#line  1492 "VBNET.ATG" 
 		if (expr != null) { rank.Add(expr); } 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			Expr(
-#line  1493 "VBNET.ATG" 
+#line  1494 "VBNET.ATG" 
 out expr);
 			if (la.kind == 201) {
 				lexer.NextToken();
 
-#line  1494 "VBNET.ATG" 
+#line  1495 "VBNET.ATG" 
 				EnsureIsZero(expr); 
 				Expr(
-#line  1495 "VBNET.ATG" 
+#line  1496 "VBNET.ATG" 
 out expr);
 			}
 
-#line  1497 "VBNET.ATG" 
+#line  1498 "VBNET.ATG" 
 			if (expr != null) { rank.Add(expr); } 
 		}
 	}
 
 	void CollectionInitializer(
-#line  1511 "VBNET.ATG" 
+#line  1512 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1513 "VBNET.ATG" 
+#line  1514 "VBNET.ATG" 
 		Expression expr = null;
 		CollectionInitializerExpression initializer = new CollectionInitializerExpression();
 		
 		Expect(23);
 		if (StartOf(30)) {
 			VariableInitializer(
-#line  1518 "VBNET.ATG" 
+#line  1519 "VBNET.ATG" 
 out expr);
 
-#line  1520 "VBNET.ATG" 
+#line  1521 "VBNET.ATG" 
 			if (expr != null) { initializer.CreateExpressions.Add(expr); }
 			
 			while (
-#line  1523 "VBNET.ATG" 
+#line  1524 "VBNET.ATG" 
 NotFinalComma()) {
 				Expect(12);
 				VariableInitializer(
-#line  1523 "VBNET.ATG" 
+#line  1524 "VBNET.ATG" 
 out expr);
 
-#line  1524 "VBNET.ATG" 
+#line  1525 "VBNET.ATG" 
 				if (expr != null) { initializer.CreateExpressions.Add(expr); } 
 			}
 		}
 		Expect(24);
 
-#line  1527 "VBNET.ATG" 
+#line  1528 "VBNET.ATG" 
 		outExpr = initializer; 
 	}
 
 	void EventMemberSpecifier(
-#line  1597 "VBNET.ATG" 
+#line  1598 "VBNET.ATG" 
 out string name) {
 
-#line  1598 "VBNET.ATG" 
+#line  1599 "VBNET.ATG" 
 		string eventName; 
 		if (StartOf(14)) {
 			Identifier();
@@ -3506,54 +3509,54 @@ out string name) {
 			lexer.NextToken();
 		} else SynErr(255);
 
-#line  1601 "VBNET.ATG" 
+#line  1602 "VBNET.ATG" 
 		name = t.val; 
 		Expect(16);
 		IdentifierOrKeyword(
-#line  1603 "VBNET.ATG" 
+#line  1604 "VBNET.ATG" 
 out eventName);
 
-#line  1604 "VBNET.ATG" 
+#line  1605 "VBNET.ATG" 
 		name = name + "." + eventName; 
 	}
 
 	void IdentifierOrKeyword(
-#line  3329 "VBNET.ATG" 
+#line  3330 "VBNET.ATG" 
 out string name) {
 
-#line  3331 "VBNET.ATG" 
+#line  3332 "VBNET.ATG" 
 		lexer.NextToken(); name = t.val;  
 	}
 
 	void QueryExpr(
-#line  2013 "VBNET.ATG" 
+#line  2014 "VBNET.ATG" 
 out Expression expr) {
 
-#line  2015 "VBNET.ATG" 
+#line  2016 "VBNET.ATG" 
 		QueryExpression qexpr = new QueryExpression();
 		qexpr.StartLocation = la.Location;
 		List<QueryExpressionClause> middleClauses = new List<QueryExpressionClause>();
 		expr = qexpr;
 		
 		FromOrAggregateQueryOperator(
-#line  2020 "VBNET.ATG" 
+#line  2021 "VBNET.ATG" 
 middleClauses);
 		while (StartOf(31)) {
 			QueryOperator(
-#line  2021 "VBNET.ATG" 
+#line  2022 "VBNET.ATG" 
 middleClauses);
 		}
 
-#line  2023 "VBNET.ATG" 
+#line  2024 "VBNET.ATG" 
 		qexpr.EndLocation = t.EndLocation;
 		
 	}
 
 	void LambdaExpr(
-#line  1995 "VBNET.ATG" 
+#line  1996 "VBNET.ATG" 
 out Expression expr) {
 
-#line  1997 "VBNET.ATG" 
+#line  1998 "VBNET.ATG" 
 		Expression inner = null;
 		LambdaExpression lambda = new LambdaExpression();
 		lambda.StartLocation = la.Location;
@@ -3563,16 +3566,16 @@ out Expression expr) {
 			lexer.NextToken();
 			if (StartOf(4)) {
 				FormalParameterList(
-#line  2003 "VBNET.ATG" 
+#line  2004 "VBNET.ATG" 
 lambda.Parameters);
 			}
 			Expect(26);
 		}
 		Expr(
-#line  2004 "VBNET.ATG" 
+#line  2005 "VBNET.ATG" 
 out inner);
 
-#line  2006 "VBNET.ATG" 
+#line  2007 "VBNET.ATG" 
 		lambda.ExpressionBody = inner;
 		lambda.EndLocation = t.EndLocation; // la.Location?
 		
@@ -3581,116 +3584,116 @@ out inner);
 	}
 
 	void DisjunctionExpr(
-#line  1779 "VBNET.ATG" 
+#line  1780 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1781 "VBNET.ATG" 
+#line  1782 "VBNET.ATG" 
 		Expression expr;
 		BinaryOperatorType op = BinaryOperatorType.None;
 		
 		ConjunctionExpr(
-#line  1784 "VBNET.ATG" 
+#line  1785 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 161 || la.kind == 163 || la.kind == 221) {
 			if (la.kind == 161) {
 				lexer.NextToken();
 
-#line  1787 "VBNET.ATG" 
+#line  1788 "VBNET.ATG" 
 				op = BinaryOperatorType.BitwiseOr; 
 			} else if (la.kind == 163) {
 				lexer.NextToken();
 
-#line  1788 "VBNET.ATG" 
+#line  1789 "VBNET.ATG" 
 				op = BinaryOperatorType.LogicalOr; 
 			} else {
 				lexer.NextToken();
 
-#line  1789 "VBNET.ATG" 
+#line  1790 "VBNET.ATG" 
 				op = BinaryOperatorType.ExclusiveOr; 
 			}
 			ConjunctionExpr(
-#line  1791 "VBNET.ATG" 
+#line  1792 "VBNET.ATG" 
 out expr);
 
-#line  1791 "VBNET.ATG" 
+#line  1792 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, op, expr);  
 		}
 	}
 
 	void AssignmentOperator(
-#line  1615 "VBNET.ATG" 
+#line  1616 "VBNET.ATG" 
 out AssignmentOperatorType op) {
 
-#line  1616 "VBNET.ATG" 
+#line  1617 "VBNET.ATG" 
 		op = AssignmentOperatorType.None; 
 		switch (la.kind) {
 		case 10: {
 			lexer.NextToken();
 
-#line  1617 "VBNET.ATG" 
+#line  1618 "VBNET.ATG" 
 			op = AssignmentOperatorType.Assign; 
 			break;
 		}
 		case 42: {
 			lexer.NextToken();
 
-#line  1618 "VBNET.ATG" 
+#line  1619 "VBNET.ATG" 
 			op = AssignmentOperatorType.ConcatString; 
 			break;
 		}
 		case 34: {
 			lexer.NextToken();
 
-#line  1619 "VBNET.ATG" 
+#line  1620 "VBNET.ATG" 
 			op = AssignmentOperatorType.Add; 
 			break;
 		}
 		case 36: {
 			lexer.NextToken();
 
-#line  1620 "VBNET.ATG" 
+#line  1621 "VBNET.ATG" 
 			op = AssignmentOperatorType.Subtract; 
 			break;
 		}
 		case 37: {
 			lexer.NextToken();
 
-#line  1621 "VBNET.ATG" 
+#line  1622 "VBNET.ATG" 
 			op = AssignmentOperatorType.Multiply; 
 			break;
 		}
 		case 38: {
 			lexer.NextToken();
 
-#line  1622 "VBNET.ATG" 
+#line  1623 "VBNET.ATG" 
 			op = AssignmentOperatorType.Divide; 
 			break;
 		}
 		case 39: {
 			lexer.NextToken();
 
-#line  1623 "VBNET.ATG" 
+#line  1624 "VBNET.ATG" 
 			op = AssignmentOperatorType.DivideInteger; 
 			break;
 		}
 		case 35: {
 			lexer.NextToken();
 
-#line  1624 "VBNET.ATG" 
+#line  1625 "VBNET.ATG" 
 			op = AssignmentOperatorType.Power; 
 			break;
 		}
 		case 40: {
 			lexer.NextToken();
 
-#line  1625 "VBNET.ATG" 
+#line  1626 "VBNET.ATG" 
 			op = AssignmentOperatorType.ShiftLeft; 
 			break;
 		}
 		case 41: {
 			lexer.NextToken();
 
-#line  1626 "VBNET.ATG" 
+#line  1627 "VBNET.ATG" 
 			op = AssignmentOperatorType.ShiftRight; 
 			break;
 		}
@@ -3699,54 +3702,54 @@ out AssignmentOperatorType op) {
 	}
 
 	void SimpleExpr(
-#line  1630 "VBNET.ATG" 
+#line  1631 "VBNET.ATG" 
 out Expression pexpr) {
 
-#line  1631 "VBNET.ATG" 
+#line  1632 "VBNET.ATG" 
 		string name; 
 		SimpleNonInvocationExpression(
-#line  1633 "VBNET.ATG" 
+#line  1634 "VBNET.ATG" 
 out pexpr);
 		while (la.kind == 16 || la.kind == 17 || la.kind == 25) {
 			if (la.kind == 16) {
 				lexer.NextToken();
 				IdentifierOrKeyword(
-#line  1635 "VBNET.ATG" 
+#line  1636 "VBNET.ATG" 
 out name);
 
-#line  1636 "VBNET.ATG" 
+#line  1637 "VBNET.ATG" 
 				pexpr = new MemberReferenceExpression(pexpr, name); 
 				if (
-#line  1637 "VBNET.ATG" 
+#line  1638 "VBNET.ATG" 
 la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
 					lexer.NextToken();
 					Expect(155);
 					TypeArgumentList(
-#line  1638 "VBNET.ATG" 
+#line  1639 "VBNET.ATG" 
 ((MemberReferenceExpression)pexpr).TypeArguments);
 					Expect(26);
 				}
 			} else if (la.kind == 17) {
 				lexer.NextToken();
 				IdentifierOrKeyword(
-#line  1640 "VBNET.ATG" 
+#line  1641 "VBNET.ATG" 
 out name);
 
-#line  1640 "VBNET.ATG" 
+#line  1641 "VBNET.ATG" 
 				pexpr = new BinaryOperatorExpression(pexpr, BinaryOperatorType.DictionaryAccess, new PrimitiveExpression(name, name)); 
 			} else {
 				InvocationExpression(
-#line  1641 "VBNET.ATG" 
+#line  1642 "VBNET.ATG" 
 ref pexpr);
 			}
 		}
 	}
 
 	void SimpleNonInvocationExpression(
-#line  1645 "VBNET.ATG" 
+#line  1646 "VBNET.ATG" 
 out Expression pexpr) {
 
-#line  1647 "VBNET.ATG" 
+#line  1648 "VBNET.ATG" 
 		Expression expr;
 		TypeReference type = null;
 		string name = String.Empty;
@@ -3757,98 +3760,98 @@ out Expression pexpr) {
 			case 3: {
 				lexer.NextToken();
 
-#line  1655 "VBNET.ATG" 
+#line  1656 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };  
 				break;
 			}
 			case 4: {
 				lexer.NextToken();
 
-#line  1656 "VBNET.ATG" 
+#line  1657 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };  
 				break;
 			}
 			case 7: {
 				lexer.NextToken();
 
-#line  1657 "VBNET.ATG" 
+#line  1658 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };  
 				break;
 			}
 			case 6: {
 				lexer.NextToken();
 
-#line  1658 "VBNET.ATG" 
+#line  1659 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };  
 				break;
 			}
 			case 5: {
 				lexer.NextToken();
 
-#line  1659 "VBNET.ATG" 
+#line  1660 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };  
 				break;
 			}
 			case 9: {
 				lexer.NextToken();
 
-#line  1660 "VBNET.ATG" 
+#line  1661 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };  
 				break;
 			}
 			case 8: {
 				lexer.NextToken();
 
-#line  1661 "VBNET.ATG" 
+#line  1662 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };  
 				break;
 			}
 			case 202: {
 				lexer.NextToken();
 
-#line  1663 "VBNET.ATG" 
+#line  1664 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(true, "true");  
 				break;
 			}
 			case 109: {
 				lexer.NextToken();
 
-#line  1664 "VBNET.ATG" 
+#line  1665 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(false, "false"); 
 				break;
 			}
 			case 151: {
 				lexer.NextToken();
 
-#line  1665 "VBNET.ATG" 
+#line  1666 "VBNET.ATG" 
 				pexpr = new PrimitiveExpression(null, "null");  
 				break;
 			}
 			case 25: {
 				lexer.NextToken();
 				Expr(
-#line  1666 "VBNET.ATG" 
+#line  1667 "VBNET.ATG" 
 out expr);
 				Expect(26);
 
-#line  1666 "VBNET.ATG" 
+#line  1667 "VBNET.ATG" 
 				pexpr = new ParenthesizedExpression(expr); 
 				break;
 			}
 			case 2: case 45: case 49: case 51: case 52: case 53: case 54: case 57: case 74: case 85: case 91: case 94: case 103: case 108: case 113: case 120: case 126: case 130: case 133: case 156: case 162: case 169: case 188: case 197: case 198: case 208: case 209: case 215: {
 				Identifier();
 
-#line  1668 "VBNET.ATG" 
+#line  1669 "VBNET.ATG" 
 				pexpr = new IdentifierExpression(t.val);
 				pexpr.StartLocation = t.Location; pexpr.EndLocation = t.EndLocation;
 				
 				if (
-#line  1671 "VBNET.ATG" 
+#line  1672 "VBNET.ATG" 
 la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
 					lexer.NextToken();
 					Expect(155);
 					TypeArgumentList(
-#line  1672 "VBNET.ATG" 
+#line  1673 "VBNET.ATG" 
 ((IdentifierExpression)pexpr).TypeArguments);
 					Expect(26);
 				}
@@ -3856,51 +3859,51 @@ la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
 			}
 			case 55: case 58: case 69: case 86: case 87: case 96: case 128: case 137: case 154: case 181: case 186: case 187: case 193: case 206: case 207: case 210: {
 
-#line  1674 "VBNET.ATG" 
+#line  1675 "VBNET.ATG" 
 				string val = String.Empty; 
 				if (StartOf(11)) {
 					PrimitiveTypeName(
-#line  1675 "VBNET.ATG" 
+#line  1676 "VBNET.ATG" 
 out val);
 				} else if (la.kind == 154) {
 					lexer.NextToken();
 
-#line  1675 "VBNET.ATG" 
+#line  1676 "VBNET.ATG" 
 					val = "System.Object"; 
 				} else SynErr(257);
 
-#line  1676 "VBNET.ATG" 
+#line  1677 "VBNET.ATG" 
 				pexpr = new TypeReferenceExpression(new TypeReference(val, true)); 
 				break;
 			}
 			case 139: {
 				lexer.NextToken();
 
-#line  1677 "VBNET.ATG" 
+#line  1678 "VBNET.ATG" 
 				pexpr = new ThisReferenceExpression(); 
 				break;
 			}
 			case 144: case 145: {
 
-#line  1678 "VBNET.ATG" 
+#line  1679 "VBNET.ATG" 
 				Expression retExpr = null; 
 				if (la.kind == 144) {
 					lexer.NextToken();
 
-#line  1679 "VBNET.ATG" 
+#line  1680 "VBNET.ATG" 
 					retExpr = new BaseReferenceExpression(); 
 				} else if (la.kind == 145) {
 					lexer.NextToken();
 
-#line  1680 "VBNET.ATG" 
+#line  1681 "VBNET.ATG" 
 					retExpr = new ClassReferenceExpression(); 
 				} else SynErr(258);
 				Expect(16);
 				IdentifierOrKeyword(
-#line  1682 "VBNET.ATG" 
+#line  1683 "VBNET.ATG" 
 out name);
 
-#line  1682 "VBNET.ATG" 
+#line  1683 "VBNET.ATG" 
 				pexpr = new MemberReferenceExpression(retExpr, name); 
 				break;
 			}
@@ -3909,77 +3912,77 @@ out name);
 				Expect(16);
 				Identifier();
 
-#line  1684 "VBNET.ATG" 
+#line  1685 "VBNET.ATG" 
 				type = new TypeReference(t.val ?? ""); 
 
-#line  1686 "VBNET.ATG" 
+#line  1687 "VBNET.ATG" 
 				type.IsGlobal = true; 
 
-#line  1687 "VBNET.ATG" 
+#line  1688 "VBNET.ATG" 
 				pexpr = new TypeReferenceExpression(type); 
 				break;
 			}
 			case 148: {
 				ObjectCreateExpression(
-#line  1688 "VBNET.ATG" 
+#line  1689 "VBNET.ATG" 
 out expr);
 
-#line  1688 "VBNET.ATG" 
+#line  1689 "VBNET.ATG" 
 				pexpr = expr; 
 				break;
 			}
 			case 81: case 93: case 204: {
 
-#line  1690 "VBNET.ATG" 
+#line  1691 "VBNET.ATG" 
 				CastType castType = CastType.Cast; 
 				if (la.kind == 93) {
 					lexer.NextToken();
 				} else if (la.kind == 81) {
 					lexer.NextToken();
 
-#line  1692 "VBNET.ATG" 
+#line  1693 "VBNET.ATG" 
 					castType = CastType.Conversion; 
 				} else if (la.kind == 204) {
 					lexer.NextToken();
 
-#line  1693 "VBNET.ATG" 
+#line  1694 "VBNET.ATG" 
 					castType = CastType.TryCast; 
 				} else SynErr(259);
 				Expect(25);
 				Expr(
-#line  1695 "VBNET.ATG" 
+#line  1696 "VBNET.ATG" 
 out expr);
 				Expect(12);
 				TypeName(
-#line  1695 "VBNET.ATG" 
+#line  1696 "VBNET.ATG" 
 out type);
 				Expect(26);
 
-#line  1696 "VBNET.ATG" 
+#line  1697 "VBNET.ATG" 
 				pexpr = new CastExpression(type, expr, castType); 
 				break;
 			}
 			case 63: case 64: case 65: case 66: case 67: case 68: case 70: case 72: case 73: case 77: case 78: case 79: case 80: case 82: case 83: case 84: {
 				CastTarget(
-#line  1697 "VBNET.ATG" 
+#line  1698 "VBNET.ATG" 
 out type);
 				Expect(25);
 				Expr(
-#line  1697 "VBNET.ATG" 
+#line  1698 "VBNET.ATG" 
 out expr);
 				Expect(26);
 
-#line  1697 "VBNET.ATG" 
+#line  1698 "VBNET.ATG" 
 				pexpr = new CastExpression(type, expr, CastType.PrimitiveConversion); 
 				break;
 			}
 			case 44: {
 				lexer.NextToken();
 				Expr(
-#line  1698 "VBNET.ATG" 
+#line  1699 "VBNET.ATG" 
 out expr);
 
-#line  1698 "VBNET.ATG" 
+#line  1699 "VBNET.ATG" 
 				pexpr = new AddressOfExpression(expr); 
 				break;
 			}
@@ -3987,31 +3990,31 @@ out expr);
 				lexer.NextToken();
 				Expect(25);
 				GetTypeTypeName(
-#line  1699 "VBNET.ATG" 
+#line  1700 "VBNET.ATG" 
 out type);
 				Expect(26);
 
-#line  1699 "VBNET.ATG" 
+#line  1700 "VBNET.ATG" 
 				pexpr = new TypeOfExpression(type); 
 				break;
 			}
 			case 205: {
 				lexer.NextToken();
 				SimpleExpr(
-#line  1700 "VBNET.ATG" 
+#line  1701 "VBNET.ATG" 
 out expr);
 				Expect(131);
 				TypeName(
-#line  1700 "VBNET.ATG" 
+#line  1701 "VBNET.ATG" 
 out type);
 
-#line  1700 "VBNET.ATG" 
+#line  1701 "VBNET.ATG" 
 				pexpr = new TypeOfIsExpression(expr, type); 
 				break;
 			}
 			case 122: {
 				ConditionalExpression(
-#line  1701 "VBNET.ATG" 
+#line  1702 "VBNET.ATG" 
 out pexpr);
 				break;
 			}
@@ -4019,170 +4022,170 @@ out pexpr);
 		} else if (la.kind == 16) {
 			lexer.NextToken();
 			IdentifierOrKeyword(
-#line  1705 "VBNET.ATG" 
+#line  1706 "VBNET.ATG" 
 out name);
 
-#line  1705 "VBNET.ATG" 
+#line  1706 "VBNET.ATG" 
 			pexpr = new MemberReferenceExpression(null, name);
 		} else SynErr(260);
 	}
 
 	void TypeArgumentList(
-#line  2509 "VBNET.ATG" 
+#line  2510 "VBNET.ATG" 
 List<TypeReference> typeArguments) {
 
-#line  2511 "VBNET.ATG" 
+#line  2512 "VBNET.ATG" 
 		TypeReference typeref;
 		
 		TypeName(
-#line  2513 "VBNET.ATG" 
+#line  2514 "VBNET.ATG" 
 out typeref);
 
-#line  2513 "VBNET.ATG" 
+#line  2514 "VBNET.ATG" 
 		if (typeref != null) typeArguments.Add(typeref); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			TypeName(
-#line  2516 "VBNET.ATG" 
+#line  2517 "VBNET.ATG" 
 out typeref);
 
-#line  2516 "VBNET.ATG" 
+#line  2517 "VBNET.ATG" 
 			if (typeref != null) typeArguments.Add(typeref); 
 		}
 	}
 
 	void InvocationExpression(
-#line  1743 "VBNET.ATG" 
+#line  1744 "VBNET.ATG" 
 ref Expression pexpr) {
 
-#line  1744 "VBNET.ATG" 
+#line  1745 "VBNET.ATG" 
 		List<Expression> parameters = null; 
 		Expect(25);
 
-#line  1746 "VBNET.ATG" 
+#line  1747 "VBNET.ATG" 
 		Location start = t.Location; 
 		ArgumentList(
-#line  1747 "VBNET.ATG" 
+#line  1748 "VBNET.ATG" 
 out parameters);
 		Expect(26);
 
-#line  1750 "VBNET.ATG" 
+#line  1751 "VBNET.ATG" 
 		pexpr = new InvocationExpression(pexpr, parameters);
 		
 
-#line  1752 "VBNET.ATG" 
+#line  1753 "VBNET.ATG" 
 		pexpr.StartLocation = start; pexpr.EndLocation = t.Location; 
 	}
 
 	void PrimitiveTypeName(
-#line  3336 "VBNET.ATG" 
+#line  3337 "VBNET.ATG" 
 out string type) {
 
-#line  3337 "VBNET.ATG" 
+#line  3338 "VBNET.ATG" 
 		type = String.Empty; 
 		switch (la.kind) {
 		case 55: {
 			lexer.NextToken();
 
-#line  3338 "VBNET.ATG" 
+#line  3339 "VBNET.ATG" 
 			type = "System.Boolean"; 
 			break;
 		}
 		case 86: {
 			lexer.NextToken();
 
-#line  3339 "VBNET.ATG" 
+#line  3340 "VBNET.ATG" 
 			type = "System.DateTime"; 
 			break;
 		}
 		case 69: {
 			lexer.NextToken();
 
-#line  3340 "VBNET.ATG" 
+#line  3341 "VBNET.ATG" 
 			type = "System.Char"; 
 			break;
 		}
 		case 193: {
 			lexer.NextToken();
 
-#line  3341 "VBNET.ATG" 
+#line  3342 "VBNET.ATG" 
 			type = "System.String"; 
 			break;
 		}
 		case 87: {
 			lexer.NextToken();
 
-#line  3342 "VBNET.ATG" 
+#line  3343 "VBNET.ATG" 
 			type = "System.Decimal"; 
 			break;
 		}
 		case 58: {
 			lexer.NextToken();
 
-#line  3343 "VBNET.ATG" 
+#line  3344 "VBNET.ATG" 
 			type = "System.Byte"; 
 			break;
 		}
 		case 186: {
 			lexer.NextToken();
 
-#line  3344 "VBNET.ATG" 
+#line  3345 "VBNET.ATG" 
 			type = "System.Int16"; 
 			break;
 		}
 		case 128: {
 			lexer.NextToken();
 
-#line  3345 "VBNET.ATG" 
+#line  3346 "VBNET.ATG" 
 			type = "System.Int32"; 
 			break;
 		}
 		case 137: {
 			lexer.NextToken();
 
-#line  3346 "VBNET.ATG" 
+#line  3347 "VBNET.ATG" 
 			type = "System.Int64"; 
 			break;
 		}
 		case 187: {
 			lexer.NextToken();
 
-#line  3347 "VBNET.ATG" 
+#line  3348 "VBNET.ATG" 
 			type = "System.Single"; 
 			break;
 		}
 		case 96: {
 			lexer.NextToken();
 
-#line  3348 "VBNET.ATG" 
+#line  3349 "VBNET.ATG" 
 			type = "System.Double"; 
 			break;
 		}
 		case 206: {
 			lexer.NextToken();
 
-#line  3349 "VBNET.ATG" 
+#line  3350 "VBNET.ATG" 
 			type = "System.UInt32"; 
 			break;
 		}
 		case 207: {
 			lexer.NextToken();
 
-#line  3350 "VBNET.ATG" 
+#line  3351 "VBNET.ATG" 
 			type = "System.UInt64"; 
 			break;
 		}
 		case 210: {
 			lexer.NextToken();
 
-#line  3351 "VBNET.ATG" 
+#line  3352 "VBNET.ATG" 
 			type = "System.UInt16"; 
 			break;
 		}
 		case 181: {
 			lexer.NextToken();
 
-#line  3352 "VBNET.ATG" 
+#line  3353 "VBNET.ATG" 
 			type = "System.SByte"; 
 			break;
 		}
@@ -4191,122 +4194,122 @@ out string type) {
 	}
 
 	void CastTarget(
-#line  1757 "VBNET.ATG" 
+#line  1758 "VBNET.ATG" 
 out TypeReference type) {
 
-#line  1759 "VBNET.ATG" 
+#line  1760 "VBNET.ATG" 
 		type = null;
 		
 		switch (la.kind) {
 		case 63: {
 			lexer.NextToken();
 
-#line  1761 "VBNET.ATG" 
+#line  1762 "VBNET.ATG" 
 			type = new TypeReference("System.Boolean", true); 
 			break;
 		}
 		case 64: {
 			lexer.NextToken();
 
-#line  1762 "VBNET.ATG" 
+#line  1763 "VBNET.ATG" 
 			type = new TypeReference("System.Byte", true); 
 			break;
 		}
 		case 77: {
 			lexer.NextToken();
 
-#line  1763 "VBNET.ATG" 
+#line  1764 "VBNET.ATG" 
 			type = new TypeReference("System.SByte", true); 
 			break;
 		}
 		case 65: {
 			lexer.NextToken();
 
-#line  1764 "VBNET.ATG" 
+#line  1765 "VBNET.ATG" 
 			type = new TypeReference("System.Char", true); 
 			break;
 		}
 		case 66: {
 			lexer.NextToken();
 
-#line  1765 "VBNET.ATG" 
+#line  1766 "VBNET.ATG" 
 			type = new TypeReference("System.DateTime", true); 
 			break;
 		}
 		case 68: {
 			lexer.NextToken();
 
-#line  1766 "VBNET.ATG" 
+#line  1767 "VBNET.ATG" 
 			type = new TypeReference("System.Decimal", true); 
 			break;
 		}
 		case 67: {
 			lexer.NextToken();
 
-#line  1767 "VBNET.ATG" 
+#line  1768 "VBNET.ATG" 
 			type = new TypeReference("System.Double", true); 
 			break;
 		}
 		case 78: {
 			lexer.NextToken();
 
-#line  1768 "VBNET.ATG" 
+#line  1769 "VBNET.ATG" 
 			type = new TypeReference("System.Int16", true); 
 			break;
 		}
 		case 70: {
 			lexer.NextToken();
 
-#line  1769 "VBNET.ATG" 
+#line  1770 "VBNET.ATG" 
 			type = new TypeReference("System.Int32", true); 
 			break;
 		}
 		case 72: {
 			lexer.NextToken();
 
-#line  1770 "VBNET.ATG" 
+#line  1771 "VBNET.ATG" 
 			type = new TypeReference("System.Int64", true); 
 			break;
 		}
 		case 84: {
 			lexer.NextToken();
 
-#line  1771 "VBNET.ATG" 
+#line  1772 "VBNET.ATG" 
 			type = new TypeReference("System.UInt16", true); 
 			break;
 		}
 		case 82: {
 			lexer.NextToken();
 
-#line  1772 "VBNET.ATG" 
+#line  1773 "VBNET.ATG" 
 			type = new TypeReference("System.UInt32", true); 
 			break;
 		}
 		case 83: {
 			lexer.NextToken();
 
-#line  1773 "VBNET.ATG" 
+#line  1774 "VBNET.ATG" 
 			type = new TypeReference("System.UInt64", true); 
 			break;
 		}
 		case 73: {
 			lexer.NextToken();
 
-#line  1774 "VBNET.ATG" 
+#line  1775 "VBNET.ATG" 
 			type = new TypeReference("System.Object", true); 
 			break;
 		}
 		case 79: {
 			lexer.NextToken();
 
-#line  1775 "VBNET.ATG" 
+#line  1776 "VBNET.ATG" 
 			type = new TypeReference("System.Single", true); 
 			break;
 		}
 		case 80: {
 			lexer.NextToken();
 
-#line  1776 "VBNET.ATG" 
+#line  1777 "VBNET.ATG" 
 			type = new TypeReference("System.String", true); 
 			break;
 		}
@@ -4315,19 +4318,19 @@ out TypeReference type) {
 	}
 
 	void GetTypeTypeName(
-#line  2408 "VBNET.ATG" 
+#line  2409 "VBNET.ATG" 
 out TypeReference typeref) {
 
-#line  2409 "VBNET.ATG" 
+#line  2410 "VBNET.ATG" 
 		ArrayList rank = null; 
 		NonArrayTypeName(
-#line  2411 "VBNET.ATG" 
+#line  2412 "VBNET.ATG" 
 out typeref, true);
 		ArrayTypeModifiers(
-#line  2412 "VBNET.ATG" 
+#line  2413 "VBNET.ATG" 
 out rank);
 
-#line  2413 "VBNET.ATG" 
+#line  2414 "VBNET.ATG" 
 		if (rank != null && typeref != null) {
 		typeref.RankSpecifier = (int[])rank.ToArray(typeof(int));
 		}
@@ -4335,10 +4338,10 @@ out rank);
 	}
 
 	void ConditionalExpression(
-#line  1709 "VBNET.ATG" 
+#line  1710 "VBNET.ATG" 
 out Expression expr) {
 
-#line  1711 "VBNET.ATG" 
+#line  1712 "VBNET.ATG" 
 		ConditionalExpression conditionalExpression = new ConditionalExpression();
 		BinaryOperatorExpression binaryOperatorExpression = new BinaryOperatorExpression();
 		conditionalExpression.StartLocation = binaryOperatorExpression.StartLocation = la.Location;
@@ -4350,21 +4353,21 @@ out Expression expr) {
 		Expect(122);
 		Expect(25);
 		Expr(
-#line  1720 "VBNET.ATG" 
+#line  1721 "VBNET.ATG" 
 out condition);
 		Expect(12);
 		Expr(
-#line  1720 "VBNET.ATG" 
+#line  1721 "VBNET.ATG" 
 out trueExpr);
 		if (la.kind == 12) {
 			lexer.NextToken();
 			Expr(
-#line  1720 "VBNET.ATG" 
+#line  1721 "VBNET.ATG" 
 out falseExpr);
 		}
 		Expect(26);
 
-#line  1722 "VBNET.ATG" 
+#line  1723 "VBNET.ATG" 
 		if(falseExpr != null)
 		{
 			conditionalExpression.Condition = condition;
@@ -4387,348 +4390,348 @@ out falseExpr);
 	}
 
 	void ArgumentList(
-#line  2340 "VBNET.ATG" 
+#line  2341 "VBNET.ATG" 
 out List<Expression> arguments) {
 
-#line  2342 "VBNET.ATG" 
+#line  2343 "VBNET.ATG" 
 		arguments = new List<Expression>();
 		Expression expr = null;
 		
 		if (StartOf(29)) {
 			Argument(
-#line  2345 "VBNET.ATG" 
+#line  2346 "VBNET.ATG" 
 out expr);
 		}
 		while (la.kind == 12) {
 			lexer.NextToken();
 
-#line  2346 "VBNET.ATG" 
+#line  2347 "VBNET.ATG" 
 			arguments.Add(expr ?? Expression.Null); expr = null; 
 			if (StartOf(29)) {
 				Argument(
-#line  2347 "VBNET.ATG" 
+#line  2348 "VBNET.ATG" 
 out expr);
 			}
 
-#line  2348 "VBNET.ATG" 
+#line  2349 "VBNET.ATG" 
 			if (expr == null) expr = Expression.Null; 
 		}
 
-#line  2350 "VBNET.ATG" 
+#line  2351 "VBNET.ATG" 
 		if (expr != null) arguments.Add(expr); 
 	}
 
 	void ConjunctionExpr(
-#line  1795 "VBNET.ATG" 
+#line  1796 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1797 "VBNET.ATG" 
+#line  1798 "VBNET.ATG" 
 		Expression expr;
 		BinaryOperatorType op = BinaryOperatorType.None;
 		
 		NotExpr(
-#line  1800 "VBNET.ATG" 
+#line  1801 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 47 || la.kind == 48) {
 			if (la.kind == 47) {
 				lexer.NextToken();
 
-#line  1803 "VBNET.ATG" 
+#line  1804 "VBNET.ATG" 
 				op = BinaryOperatorType.BitwiseAnd; 
 			} else {
 				lexer.NextToken();
 
-#line  1804 "VBNET.ATG" 
+#line  1805 "VBNET.ATG" 
 				op = BinaryOperatorType.LogicalAnd; 
 			}
 			NotExpr(
-#line  1806 "VBNET.ATG" 
+#line  1807 "VBNET.ATG" 
 out expr);
 
-#line  1806 "VBNET.ATG" 
+#line  1807 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, op, expr);  
 		}
 	}
 
 	void NotExpr(
-#line  1810 "VBNET.ATG" 
+#line  1811 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1811 "VBNET.ATG" 
+#line  1812 "VBNET.ATG" 
 		UnaryOperatorType uop = UnaryOperatorType.None; 
 		while (la.kind == 150) {
 			lexer.NextToken();
 
-#line  1812 "VBNET.ATG" 
+#line  1813 "VBNET.ATG" 
 			uop = UnaryOperatorType.Not; 
 		}
 		ComparisonExpr(
-#line  1813 "VBNET.ATG" 
+#line  1814 "VBNET.ATG" 
 out outExpr);
 
-#line  1814 "VBNET.ATG" 
+#line  1815 "VBNET.ATG" 
 		if (uop != UnaryOperatorType.None)
 		outExpr = new UnaryOperatorExpression(outExpr, uop);
 		
 	}
 
 	void ComparisonExpr(
-#line  1819 "VBNET.ATG" 
+#line  1820 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1821 "VBNET.ATG" 
+#line  1822 "VBNET.ATG" 
 		Expression expr;
 		BinaryOperatorType op = BinaryOperatorType.None;
 		
 		ShiftExpr(
-#line  1824 "VBNET.ATG" 
+#line  1825 "VBNET.ATG" 
 out outExpr);
 		while (StartOf(33)) {
 			switch (la.kind) {
 			case 28: {
 				lexer.NextToken();
 
-#line  1827 "VBNET.ATG" 
+#line  1828 "VBNET.ATG" 
 				op = BinaryOperatorType.LessThan; 
 				break;
 			}
 			case 27: {
 				lexer.NextToken();
 
-#line  1828 "VBNET.ATG" 
+#line  1829 "VBNET.ATG" 
 				op = BinaryOperatorType.GreaterThan; 
 				break;
 			}
 			case 31: {
 				lexer.NextToken();
 
-#line  1829 "VBNET.ATG" 
+#line  1830 "VBNET.ATG" 
 				op = BinaryOperatorType.LessThanOrEqual; 
 				break;
 			}
 			case 30: {
 				lexer.NextToken();
 
-#line  1830 "VBNET.ATG" 
+#line  1831 "VBNET.ATG" 
 				op = BinaryOperatorType.GreaterThanOrEqual; 
 				break;
 			}
 			case 29: {
 				lexer.NextToken();
 
-#line  1831 "VBNET.ATG" 
+#line  1832 "VBNET.ATG" 
 				op = BinaryOperatorType.InEquality; 
 				break;
 			}
 			case 10: {
 				lexer.NextToken();
 
-#line  1832 "VBNET.ATG" 
+#line  1833 "VBNET.ATG" 
 				op = BinaryOperatorType.Equality; 
 				break;
 			}
 			case 136: {
 				lexer.NextToken();
 
-#line  1833 "VBNET.ATG" 
+#line  1834 "VBNET.ATG" 
 				op = BinaryOperatorType.Like; 
 				break;
 			}
 			case 131: {
 				lexer.NextToken();
 
-#line  1834 "VBNET.ATG" 
+#line  1835 "VBNET.ATG" 
 				op = BinaryOperatorType.ReferenceEquality; 
 				break;
 			}
 			case 132: {
 				lexer.NextToken();
 
-#line  1835 "VBNET.ATG" 
+#line  1836 "VBNET.ATG" 
 				op = BinaryOperatorType.ReferenceInequality; 
 				break;
 			}
 			}
 			if (StartOf(34)) {
 				ShiftExpr(
-#line  1838 "VBNET.ATG" 
+#line  1839 "VBNET.ATG" 
 out expr);
 
-#line  1838 "VBNET.ATG" 
+#line  1839 "VBNET.ATG" 
 				outExpr = new BinaryOperatorExpression(outExpr, op, expr);  
 			} else if (la.kind == 150) {
 				lexer.NextToken();
 				ShiftExpr(
-#line  1841 "VBNET.ATG" 
+#line  1842 "VBNET.ATG" 
 out expr);
 
-#line  1841 "VBNET.ATG" 
+#line  1842 "VBNET.ATG" 
 				outExpr = new BinaryOperatorExpression(outExpr, op, new UnaryOperatorExpression(expr, UnaryOperatorType.Not));  
 			} else SynErr(263);
 		}
 	}
 
 	void ShiftExpr(
-#line  1846 "VBNET.ATG" 
+#line  1847 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1848 "VBNET.ATG" 
+#line  1849 "VBNET.ATG" 
 		Expression expr;
 		BinaryOperatorType op = BinaryOperatorType.None;
 		
 		ConcatenationExpr(
-#line  1851 "VBNET.ATG" 
+#line  1852 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 32 || la.kind == 33) {
 			if (la.kind == 32) {
 				lexer.NextToken();
 
-#line  1854 "VBNET.ATG" 
+#line  1855 "VBNET.ATG" 
 				op = BinaryOperatorType.ShiftLeft; 
 			} else {
 				lexer.NextToken();
 
-#line  1855 "VBNET.ATG" 
+#line  1856 "VBNET.ATG" 
 				op = BinaryOperatorType.ShiftRight; 
 			}
 			ConcatenationExpr(
-#line  1857 "VBNET.ATG" 
+#line  1858 "VBNET.ATG" 
 out expr);
 
-#line  1857 "VBNET.ATG" 
+#line  1858 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, op, expr);  
 		}
 	}
 
 	void ConcatenationExpr(
-#line  1861 "VBNET.ATG" 
+#line  1862 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1862 "VBNET.ATG" 
+#line  1863 "VBNET.ATG" 
 		Expression expr; 
 		AdditiveExpr(
-#line  1864 "VBNET.ATG" 
+#line  1865 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 13) {
 			lexer.NextToken();
 			AdditiveExpr(
-#line  1864 "VBNET.ATG" 
+#line  1865 "VBNET.ATG" 
 out expr);
 
-#line  1864 "VBNET.ATG" 
+#line  1865 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.Concat, expr);  
 		}
 	}
 
 	void AdditiveExpr(
-#line  1867 "VBNET.ATG" 
+#line  1868 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1869 "VBNET.ATG" 
+#line  1870 "VBNET.ATG" 
 		Expression expr;
 		BinaryOperatorType op = BinaryOperatorType.None;
 		
 		ModuloExpr(
-#line  1872 "VBNET.ATG" 
+#line  1873 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 18 || la.kind == 19) {
 			if (la.kind == 19) {
 				lexer.NextToken();
 
-#line  1875 "VBNET.ATG" 
+#line  1876 "VBNET.ATG" 
 				op = BinaryOperatorType.Add; 
 			} else {
 				lexer.NextToken();
 
-#line  1876 "VBNET.ATG" 
+#line  1877 "VBNET.ATG" 
 				op = BinaryOperatorType.Subtract; 
 			}
 			ModuloExpr(
-#line  1878 "VBNET.ATG" 
+#line  1879 "VBNET.ATG" 
 out expr);
 
-#line  1878 "VBNET.ATG" 
+#line  1879 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, op, expr);  
 		}
 	}
 
 	void ModuloExpr(
-#line  1882 "VBNET.ATG" 
+#line  1883 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1883 "VBNET.ATG" 
+#line  1884 "VBNET.ATG" 
 		Expression expr; 
 		IntegerDivisionExpr(
-#line  1885 "VBNET.ATG" 
+#line  1886 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 140) {
 			lexer.NextToken();
 			IntegerDivisionExpr(
-#line  1885 "VBNET.ATG" 
+#line  1886 "VBNET.ATG" 
 out expr);
 
-#line  1885 "VBNET.ATG" 
+#line  1886 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.Modulus, expr);  
 		}
 	}
 
 	void IntegerDivisionExpr(
-#line  1888 "VBNET.ATG" 
+#line  1889 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1889 "VBNET.ATG" 
+#line  1890 "VBNET.ATG" 
 		Expression expr; 
 		MultiplicativeExpr(
-#line  1891 "VBNET.ATG" 
+#line  1892 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 15) {
 			lexer.NextToken();
 			MultiplicativeExpr(
-#line  1891 "VBNET.ATG" 
+#line  1892 "VBNET.ATG" 
 out expr);
 
-#line  1891 "VBNET.ATG" 
+#line  1892 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.DivideInteger, expr);  
 		}
 	}
 
 	void MultiplicativeExpr(
-#line  1894 "VBNET.ATG" 
+#line  1895 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1896 "VBNET.ATG" 
+#line  1897 "VBNET.ATG" 
 		Expression expr;
 		BinaryOperatorType op = BinaryOperatorType.None;
 		
 		UnaryExpr(
-#line  1899 "VBNET.ATG" 
+#line  1900 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 14 || la.kind == 22) {
 			if (la.kind == 22) {
 				lexer.NextToken();
 
-#line  1902 "VBNET.ATG" 
+#line  1903 "VBNET.ATG" 
 				op = BinaryOperatorType.Multiply; 
 			} else {
 				lexer.NextToken();
 
-#line  1903 "VBNET.ATG" 
+#line  1904 "VBNET.ATG" 
 				op = BinaryOperatorType.Divide; 
 			}
 			UnaryExpr(
-#line  1905 "VBNET.ATG" 
+#line  1906 "VBNET.ATG" 
 out expr);
 
-#line  1905 "VBNET.ATG" 
+#line  1906 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, op, expr); 
 		}
 	}
 
 	void UnaryExpr(
-#line  1909 "VBNET.ATG" 
+#line  1910 "VBNET.ATG" 
 out Expression uExpr) {
 
-#line  1911 "VBNET.ATG" 
+#line  1912 "VBNET.ATG" 
 		Expression expr;
 		UnaryOperatorType uop = UnaryOperatorType.None;
 		bool isUOp = false;
@@ -4737,25 +4740,25 @@ out Expression uExpr) {
 			if (la.kind == 19) {
 				lexer.NextToken();
 
-#line  1915 "VBNET.ATG" 
+#line  1916 "VBNET.ATG" 
 				uop = UnaryOperatorType.Plus; isUOp = true; 
 			} else if (la.kind == 18) {
 				lexer.NextToken();
 
-#line  1916 "VBNET.ATG" 
+#line  1917 "VBNET.ATG" 
 				uop = UnaryOperatorType.Minus; isUOp = true; 
 			} else {
 				lexer.NextToken();
 
-#line  1917 "VBNET.ATG" 
+#line  1918 "VBNET.ATG" 
 				uop = UnaryOperatorType.Dereference;  isUOp = true;
 			}
 		}
 		ExponentiationExpr(
-#line  1919 "VBNET.ATG" 
+#line  1920 "VBNET.ATG" 
 out expr);
 
-#line  1921 "VBNET.ATG" 
+#line  1922 "VBNET.ATG" 
 		if (isUOp) {
 		uExpr = new UnaryOperatorExpression(expr, uop);
 		} else {
@@ -4765,107 +4768,107 @@ out expr);
 	}
 
 	void ExponentiationExpr(
-#line  1929 "VBNET.ATG" 
+#line  1930 "VBNET.ATG" 
 out Expression outExpr) {
 
-#line  1930 "VBNET.ATG" 
+#line  1931 "VBNET.ATG" 
 		Expression expr; 
 		SimpleExpr(
-#line  1932 "VBNET.ATG" 
+#line  1933 "VBNET.ATG" 
 out outExpr);
 		while (la.kind == 20) {
 			lexer.NextToken();
 			SimpleExpr(
-#line  1932 "VBNET.ATG" 
+#line  1933 "VBNET.ATG" 
 out expr);
 
-#line  1932 "VBNET.ATG" 
+#line  1933 "VBNET.ATG" 
 			outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.Power, expr);  
 		}
 	}
 
 	void NormalOrReDimArgumentList(
-#line  2354 "VBNET.ATG" 
+#line  2355 "VBNET.ATG" 
 out List<Expression> arguments, out bool canBeNormal, out bool canBeRedim) {
 
-#line  2356 "VBNET.ATG" 
+#line  2357 "VBNET.ATG" 
 		arguments = new List<Expression>();
 		canBeNormal = true; canBeRedim = !IsNamedAssign();
 		Expression expr = null;
 		
 		if (StartOf(29)) {
 			Argument(
-#line  2361 "VBNET.ATG" 
+#line  2362 "VBNET.ATG" 
 out expr);
 			if (la.kind == 201) {
 				lexer.NextToken();
 
-#line  2362 "VBNET.ATG" 
+#line  2363 "VBNET.ATG" 
 				EnsureIsZero(expr); canBeNormal = false; 
 				Expr(
-#line  2363 "VBNET.ATG" 
+#line  2364 "VBNET.ATG" 
 out expr);
 			}
 		}
 		while (la.kind == 12) {
 			lexer.NextToken();
 
-#line  2366 "VBNET.ATG" 
+#line  2367 "VBNET.ATG" 
 			if (expr == null) canBeRedim = false; 
 
-#line  2367 "VBNET.ATG" 
+#line  2368 "VBNET.ATG" 
 			arguments.Add(expr ?? Expression.Null); expr = null; 
 
-#line  2368 "VBNET.ATG" 
+#line  2369 "VBNET.ATG" 
 			canBeRedim &= !IsNamedAssign(); 
 			if (StartOf(29)) {
 				Argument(
-#line  2369 "VBNET.ATG" 
+#line  2370 "VBNET.ATG" 
 out expr);
 				if (la.kind == 201) {
 					lexer.NextToken();
 
-#line  2370 "VBNET.ATG" 
+#line  2371 "VBNET.ATG" 
 					EnsureIsZero(expr); canBeNormal = false; 
 					Expr(
-#line  2371 "VBNET.ATG" 
+#line  2372 "VBNET.ATG" 
 out expr);
 				}
 			}
 
-#line  2373 "VBNET.ATG" 
+#line  2374 "VBNET.ATG" 
 			if (expr == null) { canBeRedim = false; expr = Expression.Null; } 
 		}
 
-#line  2375 "VBNET.ATG" 
+#line  2376 "VBNET.ATG" 
 		if (expr != null) arguments.Add(expr); else canBeRedim = false; 
 	}
 
 	void ArrayTypeModifiers(
-#line  2482 "VBNET.ATG" 
+#line  2483 "VBNET.ATG" 
 out ArrayList arrayModifiers) {
 
-#line  2484 "VBNET.ATG" 
+#line  2485 "VBNET.ATG" 
 		arrayModifiers = new ArrayList();
 		int i = 0;
 		
 		while (
-#line  2487 "VBNET.ATG" 
+#line  2488 "VBNET.ATG" 
 IsDims()) {
 			Expect(25);
 			if (la.kind == 12 || la.kind == 26) {
 				RankList(
-#line  2489 "VBNET.ATG" 
+#line  2490 "VBNET.ATG" 
 out i);
 			}
 
-#line  2491 "VBNET.ATG" 
+#line  2492 "VBNET.ATG" 
 			arrayModifiers.Add(i);
 			
 			Expect(26);
 		}
 
-#line  2496 "VBNET.ATG" 
+#line  2497 "VBNET.ATG" 
 		if(arrayModifiers.Count == 0) {
 		 arrayModifiers = null;
 		}
@@ -4873,10 +4876,10 @@ out i);
 	}
 
 	void MemberInitializer(
-#line  2324 "VBNET.ATG" 
+#line  2325 "VBNET.ATG" 
 out NamedArgumentExpression memberInitializer) {
 
-#line  2326 "VBNET.ATG" 
+#line  2327 "VBNET.ATG" 
 		memberInitializer = new NamedArgumentExpression();
 		memberInitializer.StartLocation = la.Location;
 		Expression initExpr = null;
@@ -4884,14 +4887,14 @@ out NamedArgumentExpression memberInitializer) {
 		
 		Expect(16);
 		IdentifierOrKeyword(
-#line  2331 "VBNET.ATG" 
+#line  2332 "VBNET.ATG" 
 out name);
 		Expect(10);
 		Expr(
-#line  2331 "VBNET.ATG" 
+#line  2332 "VBNET.ATG" 
 out initExpr);
 
-#line  2333 "VBNET.ATG" 
+#line  2334 "VBNET.ATG" 
 		memberInitializer.Name = name;
 		memberInitializer.Expression = initExpr;
 		memberInitializer.EndLocation = t.EndLocation;
@@ -4899,27 +4902,27 @@ out initExpr);
 	}
 
 	void FromOrAggregateQueryOperator(
-#line  2027 "VBNET.ATG" 
+#line  2028 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2028 "VBNET.ATG" 
+#line  2029 "VBNET.ATG" 
 		
 		if (la.kind == 113) {
 			FromQueryOperator(
-#line  2029 "VBNET.ATG" 
+#line  2030 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 45) {
 			AggregateQueryOperator(
-#line  2030 "VBNET.ATG" 
+#line  2031 "VBNET.ATG" 
 middleClauses);
 		} else SynErr(264);
 	}
 
 	void QueryOperator(
-#line  2033 "VBNET.ATG" 
+#line  2034 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2035 "VBNET.ATG" 
+#line  2036 "VBNET.ATG" 
 		QueryExpressionJoinVBClause joinClause = null;
 		QueryExpressionGroupVBClause groupByClause = null;
 		QueryExpressionPartitionVBClause partitionClause = null;
@@ -4927,79 +4930,79 @@ List<QueryExpressionClause> middleClauses) {
 		
 		if (la.kind == 113) {
 			FromQueryOperator(
-#line  2040 "VBNET.ATG" 
+#line  2041 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 45) {
 			AggregateQueryOperator(
-#line  2041 "VBNET.ATG" 
+#line  2042 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 182) {
 			SelectQueryOperator(
-#line  2042 "VBNET.ATG" 
+#line  2043 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 94) {
 			DistinctQueryOperator(
-#line  2043 "VBNET.ATG" 
+#line  2044 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 215) {
 			WhereQueryOperator(
-#line  2044 "VBNET.ATG" 
+#line  2045 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 162) {
 			OrderByQueryOperator(
-#line  2045 "VBNET.ATG" 
+#line  2046 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 188 || la.kind == 197) {
 			PartitionQueryOperator(
-#line  2046 "VBNET.ATG" 
+#line  2047 "VBNET.ATG" 
 out partitionClause);
 		} else if (la.kind == 134) {
 			LetQueryOperator(
-#line  2047 "VBNET.ATG" 
+#line  2048 "VBNET.ATG" 
 middleClauses);
 		} else if (la.kind == 133) {
 			JoinQueryOperator(
-#line  2048 "VBNET.ATG" 
+#line  2049 "VBNET.ATG" 
 out joinClause);
 
-#line  2049 "VBNET.ATG" 
+#line  2050 "VBNET.ATG" 
 			middleClauses.Add(joinClause); 
 		} else if (
-#line  2050 "VBNET.ATG" 
+#line  2051 "VBNET.ATG" 
 la.kind == Tokens.Group && Peek(1).kind == Tokens.Join) {
 			GroupJoinQueryOperator(
-#line  2050 "VBNET.ATG" 
+#line  2051 "VBNET.ATG" 
 out groupJoinClause);
 
-#line  2051 "VBNET.ATG" 
+#line  2052 "VBNET.ATG" 
 			middleClauses.Add(groupJoinClause); 
 		} else if (la.kind == 120) {
 			GroupByQueryOperator(
-#line  2052 "VBNET.ATG" 
+#line  2053 "VBNET.ATG" 
 out groupByClause);
 
-#line  2053 "VBNET.ATG" 
+#line  2054 "VBNET.ATG" 
 			middleClauses.Add(groupByClause); 
 		} else SynErr(265);
 	}
 
 	void FromQueryOperator(
-#line  2128 "VBNET.ATG" 
+#line  2129 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2130 "VBNET.ATG" 
+#line  2131 "VBNET.ATG" 
 		
 		Expect(113);
 		CollectionRangeVariableDeclarationList(
-#line  2131 "VBNET.ATG" 
+#line  2132 "VBNET.ATG" 
 middleClauses);
 	}
 
 	void AggregateQueryOperator(
-#line  2191 "VBNET.ATG" 
+#line  2192 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2193 "VBNET.ATG" 
+#line  2194 "VBNET.ATG" 
 		QueryExpressionFromClause fromClause = null;
 		QueryExpressionAggregateClause aggregateClause = new QueryExpressionAggregateClause();
 		aggregateClause.IntoVariables = new List<ExpressionRangeVariable>();
@@ -5007,78 +5010,78 @@ List<QueryExpressionClause> middleClauses) {
 		
 		Expect(45);
 		CollectionRangeVariableDeclaration(
-#line  2198 "VBNET.ATG" 
+#line  2199 "VBNET.ATG" 
 out fromClause);
 
-#line  2200 "VBNET.ATG" 
+#line  2201 "VBNET.ATG" 
 		aggregateClause.FromClause = fromClause;
 		
 		while (StartOf(31)) {
 			QueryOperator(
-#line  2203 "VBNET.ATG" 
+#line  2204 "VBNET.ATG" 
 aggregateClause.MiddleClauses);
 		}
 		Expect(130);
 		ExpressionRangeVariableDeclarationList(
-#line  2205 "VBNET.ATG" 
+#line  2206 "VBNET.ATG" 
 aggregateClause.IntoVariables);
 
-#line  2207 "VBNET.ATG" 
+#line  2208 "VBNET.ATG" 
 		aggregateClause.EndLocation = t.EndLocation;
 		middleClauses.Add(aggregateClause);
 		
 	}
 
 	void SelectQueryOperator(
-#line  2134 "VBNET.ATG" 
+#line  2135 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2136 "VBNET.ATG" 
+#line  2137 "VBNET.ATG" 
 		QueryExpressionSelectVBClause selectClause = new QueryExpressionSelectVBClause();
 		selectClause.StartLocation = la.Location;
 		
 		Expect(182);
 		ExpressionRangeVariableDeclarationList(
-#line  2139 "VBNET.ATG" 
+#line  2140 "VBNET.ATG" 
 selectClause.Variables);
 
-#line  2141 "VBNET.ATG" 
+#line  2142 "VBNET.ATG" 
 		selectClause.EndLocation = t.Location;
 		middleClauses.Add(selectClause);
 		
 	}
 
 	void DistinctQueryOperator(
-#line  2146 "VBNET.ATG" 
+#line  2147 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2148 "VBNET.ATG" 
+#line  2149 "VBNET.ATG" 
 		QueryExpressionDistinctClause distinctClause = new QueryExpressionDistinctClause();
 		distinctClause.StartLocation = la.Location;
 		
 		Expect(94);
 
-#line  2153 "VBNET.ATG" 
+#line  2154 "VBNET.ATG" 
 		distinctClause.EndLocation = t.EndLocation;
 		middleClauses.Add(distinctClause);
 		
 	}
 
 	void WhereQueryOperator(
-#line  2158 "VBNET.ATG" 
+#line  2159 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2160 "VBNET.ATG" 
+#line  2161 "VBNET.ATG" 
 		QueryExpressionWhereClause whereClause = new QueryExpressionWhereClause();
 		whereClause.StartLocation = la.Location;
 		Expression operand = null;
 		
 		Expect(215);
 		Expr(
-#line  2164 "VBNET.ATG" 
+#line  2165 "VBNET.ATG" 
 out operand);
 
-#line  2166 "VBNET.ATG" 
+#line  2167 "VBNET.ATG" 
 		whereClause.Condition = operand;
 		whereClause.EndLocation = t.EndLocation;
 		
@@ -5087,10 +5090,10 @@ out operand);
 	}
 
 	void OrderByQueryOperator(
-#line  2056 "VBNET.ATG" 
+#line  2057 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2058 "VBNET.ATG" 
+#line  2059 "VBNET.ATG" 
 		QueryExpressionOrderClause orderClause = new QueryExpressionOrderClause();
 		orderClause.StartLocation = la.Location;
 		List<QueryExpressionOrdering> orderings = null;
@@ -5098,10 +5101,10 @@ List<QueryExpressionClause> middleClauses) {
 		Expect(162);
 		Expect(57);
 		OrderExpressionList(
-#line  2062 "VBNET.ATG" 
+#line  2063 "VBNET.ATG" 
 out orderings);
 
-#line  2064 "VBNET.ATG" 
+#line  2065 "VBNET.ATG" 
 		orderClause.Orderings = orderings;
 		orderClause.EndLocation = t.EndLocation;
 		middleClauses.Add(orderClause);
@@ -5109,10 +5112,10 @@ out orderings);
 	}
 
 	void PartitionQueryOperator(
-#line  2173 "VBNET.ATG" 
+#line  2174 "VBNET.ATG" 
 out QueryExpressionPartitionVBClause partitionClause) {
 
-#line  2175 "VBNET.ATG" 
+#line  2176 "VBNET.ATG" 
 		partitionClause = new QueryExpressionPartitionVBClause();
 		partitionClause.StartLocation = la.Location;
 		Expression expr = null;
@@ -5120,33 +5123,33 @@ out QueryExpressionPartitionVBClause partitionClause) {
 		if (la.kind == 197) {
 			lexer.NextToken();
 
-#line  2179 "VBNET.ATG" 
+#line  2180 "VBNET.ATG" 
 			partitionClause.PartitionType = QueryExpressionPartitionType.Take; 
 			if (la.kind == 216) {
 				lexer.NextToken();
 
-#line  2180 "VBNET.ATG" 
+#line  2181 "VBNET.ATG" 
 				partitionClause.PartitionType = QueryExpressionPartitionType.TakeWhile; 
 			}
 			Expr(
-#line  2181 "VBNET.ATG" 
+#line  2182 "VBNET.ATG" 
 out expr);
 		} else if (la.kind == 188) {
 			lexer.NextToken();
 
-#line  2182 "VBNET.ATG" 
+#line  2183 "VBNET.ATG" 
 			partitionClause.PartitionType = QueryExpressionPartitionType.Skip; 
 			if (la.kind == 216) {
 				lexer.NextToken();
 			}
 
-#line  2183 "VBNET.ATG" 
+#line  2184 "VBNET.ATG" 
 			partitionClause.PartitionType = QueryExpressionPartitionType.SkipWhile; 
 			Expr(
-#line  2184 "VBNET.ATG" 
+#line  2185 "VBNET.ATG" 
 out expr);
 
-#line  2186 "VBNET.ATG" 
+#line  2187 "VBNET.ATG" 
 			partitionClause.Expression = expr;
 			partitionClause.EndLocation = t.EndLocation;
 			
@@ -5154,29 +5157,29 @@ out expr);
 	}
 
 	void LetQueryOperator(
-#line  2212 "VBNET.ATG" 
+#line  2213 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2214 "VBNET.ATG" 
+#line  2215 "VBNET.ATG" 
 		QueryExpressionLetVBClause letClause = new QueryExpressionLetVBClause();
 		letClause.StartLocation = la.Location;
 		
 		Expect(134);
 		ExpressionRangeVariableDeclarationList(
-#line  2217 "VBNET.ATG" 
+#line  2218 "VBNET.ATG" 
 letClause.Variables);
 
-#line  2219 "VBNET.ATG" 
+#line  2220 "VBNET.ATG" 
 		letClause.EndLocation = t.EndLocation;
 		middleClauses.Add(letClause);
 		
 	}
 
 	void JoinQueryOperator(
-#line  2256 "VBNET.ATG" 
+#line  2257 "VBNET.ATG" 
 out QueryExpressionJoinVBClause joinClause) {
 
-#line  2258 "VBNET.ATG" 
+#line  2259 "VBNET.ATG" 
 		joinClause = new QueryExpressionJoinVBClause();
 		joinClause.StartLocation = la.Location;
 		QueryExpressionFromClause joinVariable = null;
@@ -5186,204 +5189,204 @@ out QueryExpressionJoinVBClause joinClause) {
 		
 		Expect(133);
 		CollectionRangeVariableDeclaration(
-#line  2265 "VBNET.ATG" 
+#line  2266 "VBNET.ATG" 
 out joinVariable);
 
-#line  2266 "VBNET.ATG" 
+#line  2267 "VBNET.ATG" 
 		joinClause.JoinVariable = joinVariable; 
 		if (la.kind == 133) {
 			JoinQueryOperator(
-#line  2268 "VBNET.ATG" 
+#line  2269 "VBNET.ATG" 
 out subJoin);
 
-#line  2269 "VBNET.ATG" 
+#line  2270 "VBNET.ATG" 
 			joinClause.SubJoin = subJoin; 
 		}
 		Expect(157);
 		JoinCondition(
-#line  2272 "VBNET.ATG" 
+#line  2273 "VBNET.ATG" 
 out condition);
 
-#line  2273 "VBNET.ATG" 
+#line  2274 "VBNET.ATG" 
 		SafeAdd(joinClause, joinClause.Conditions, condition); 
 		while (la.kind == 47) {
 			lexer.NextToken();
 			JoinCondition(
-#line  2275 "VBNET.ATG" 
+#line  2276 "VBNET.ATG" 
 out condition);
 
-#line  2276 "VBNET.ATG" 
+#line  2277 "VBNET.ATG" 
 			SafeAdd(joinClause, joinClause.Conditions, condition); 
 		}
 
-#line  2279 "VBNET.ATG" 
+#line  2280 "VBNET.ATG" 
 		joinClause.EndLocation = t.EndLocation;
 		
 	}
 
 	void GroupJoinQueryOperator(
-#line  2114 "VBNET.ATG" 
+#line  2115 "VBNET.ATG" 
 out QueryExpressionGroupJoinVBClause groupJoinClause) {
 
-#line  2116 "VBNET.ATG" 
+#line  2117 "VBNET.ATG" 
 		groupJoinClause = new QueryExpressionGroupJoinVBClause();
 		groupJoinClause.StartLocation = la.Location;
 		QueryExpressionJoinVBClause joinClause = null;
 		
 		Expect(120);
 		JoinQueryOperator(
-#line  2120 "VBNET.ATG" 
+#line  2121 "VBNET.ATG" 
 out joinClause);
 		Expect(130);
 		ExpressionRangeVariableDeclarationList(
-#line  2121 "VBNET.ATG" 
+#line  2122 "VBNET.ATG" 
 groupJoinClause.IntoVariables);
 
-#line  2123 "VBNET.ATG" 
+#line  2124 "VBNET.ATG" 
 		groupJoinClause.JoinClause = joinClause;
 		groupJoinClause.EndLocation = t.EndLocation;
 		
 	}
 
 	void GroupByQueryOperator(
-#line  2101 "VBNET.ATG" 
+#line  2102 "VBNET.ATG" 
 out QueryExpressionGroupVBClause groupByClause) {
 
-#line  2103 "VBNET.ATG" 
+#line  2104 "VBNET.ATG" 
 		groupByClause = new QueryExpressionGroupVBClause();
 		groupByClause.StartLocation = la.Location;
 		
 		Expect(120);
 		ExpressionRangeVariableDeclarationList(
-#line  2106 "VBNET.ATG" 
+#line  2107 "VBNET.ATG" 
 groupByClause.GroupVariables);
 		Expect(57);
 		ExpressionRangeVariableDeclarationList(
-#line  2107 "VBNET.ATG" 
+#line  2108 "VBNET.ATG" 
 groupByClause.ByVariables);
 		Expect(130);
 		ExpressionRangeVariableDeclarationList(
-#line  2108 "VBNET.ATG" 
+#line  2109 "VBNET.ATG" 
 groupByClause.IntoVariables);
 
-#line  2110 "VBNET.ATG" 
+#line  2111 "VBNET.ATG" 
 		groupByClause.EndLocation = t.EndLocation;
 		
 	}
 
 	void OrderExpressionList(
-#line  2070 "VBNET.ATG" 
+#line  2071 "VBNET.ATG" 
 out List<QueryExpressionOrdering> orderings) {
 
-#line  2072 "VBNET.ATG" 
+#line  2073 "VBNET.ATG" 
 		orderings = new List<QueryExpressionOrdering>();
 		QueryExpressionOrdering ordering = null;
 		
 		OrderExpression(
-#line  2075 "VBNET.ATG" 
+#line  2076 "VBNET.ATG" 
 out ordering);
 
-#line  2076 "VBNET.ATG" 
+#line  2077 "VBNET.ATG" 
 		orderings.Add(ordering); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			OrderExpression(
-#line  2078 "VBNET.ATG" 
+#line  2079 "VBNET.ATG" 
 out ordering);
 
-#line  2079 "VBNET.ATG" 
+#line  2080 "VBNET.ATG" 
 			orderings.Add(ordering); 
 		}
 	}
 
 	void OrderExpression(
-#line  2083 "VBNET.ATG" 
+#line  2084 "VBNET.ATG" 
 out QueryExpressionOrdering ordering) {
 
-#line  2085 "VBNET.ATG" 
+#line  2086 "VBNET.ATG" 
 		ordering = new QueryExpressionOrdering();
 		ordering.StartLocation = la.Location;
 		ordering.Direction = QueryExpressionOrderingDirection.None;
 		Expression orderExpr = null;
 		
 		Expr(
-#line  2090 "VBNET.ATG" 
+#line  2091 "VBNET.ATG" 
 out orderExpr);
 
-#line  2092 "VBNET.ATG" 
+#line  2093 "VBNET.ATG" 
 		ordering.Criteria = orderExpr;
 		
 		if (la.kind == 51 || la.kind == 91) {
 			if (la.kind == 51) {
 				lexer.NextToken();
 
-#line  2095 "VBNET.ATG" 
+#line  2096 "VBNET.ATG" 
 				ordering.Direction = QueryExpressionOrderingDirection.Ascending; 
 			} else {
 				lexer.NextToken();
 
-#line  2096 "VBNET.ATG" 
+#line  2097 "VBNET.ATG" 
 				ordering.Direction = QueryExpressionOrderingDirection.Descending; 
 			}
 		}
 
-#line  2098 "VBNET.ATG" 
+#line  2099 "VBNET.ATG" 
 		ordering.EndLocation = t.EndLocation; 
 	}
 
 	void ExpressionRangeVariableDeclarationList(
-#line  2224 "VBNET.ATG" 
+#line  2225 "VBNET.ATG" 
 List<ExpressionRangeVariable> variables) {
 
-#line  2226 "VBNET.ATG" 
+#line  2227 "VBNET.ATG" 
 		ExpressionRangeVariable variable = null;
 		
 		ExpressionRangeVariableDeclaration(
-#line  2228 "VBNET.ATG" 
+#line  2229 "VBNET.ATG" 
 out variable);
 
-#line  2229 "VBNET.ATG" 
+#line  2230 "VBNET.ATG" 
 		variables.Add(variable); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			ExpressionRangeVariableDeclaration(
-#line  2230 "VBNET.ATG" 
+#line  2231 "VBNET.ATG" 
 out variable);
 
-#line  2230 "VBNET.ATG" 
+#line  2231 "VBNET.ATG" 
 			variables.Add(variable); 
 		}
 	}
 
 	void CollectionRangeVariableDeclarationList(
-#line  2283 "VBNET.ATG" 
+#line  2284 "VBNET.ATG" 
 List<QueryExpressionClause> middleClauses) {
 
-#line  2285 "VBNET.ATG" 
+#line  2286 "VBNET.ATG" 
 		QueryExpressionFromClause fromClause = null;
 		
 		CollectionRangeVariableDeclaration(
-#line  2287 "VBNET.ATG" 
+#line  2288 "VBNET.ATG" 
 out fromClause);
 
-#line  2288 "VBNET.ATG" 
+#line  2289 "VBNET.ATG" 
 		middleClauses.Add(fromClause); 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			CollectionRangeVariableDeclaration(
-#line  2289 "VBNET.ATG" 
+#line  2290 "VBNET.ATG" 
 out fromClause);
 
-#line  2289 "VBNET.ATG" 
+#line  2290 "VBNET.ATG" 
 			middleClauses.Add(fromClause); 
 		}
 	}
 
 	void CollectionRangeVariableDeclaration(
-#line  2292 "VBNET.ATG" 
+#line  2293 "VBNET.ATG" 
 out QueryExpressionFromClause fromClause) {
 
-#line  2294 "VBNET.ATG" 
+#line  2295 "VBNET.ATG" 
 		fromClause = new QueryExpressionFromClause();
 		fromClause.StartLocation = la.Location;
 		TypeReference typeName = null;
@@ -5393,66 +5396,66 @@ out QueryExpressionFromClause fromClause) {
 		if (la.kind == 50) {
 			lexer.NextToken();
 			TypeName(
-#line  2300 "VBNET.ATG" 
+#line  2301 "VBNET.ATG" 
 out typeName);
 
-#line  2300 "VBNET.ATG" 
+#line  2301 "VBNET.ATG" 
 			fromClause.Type = typeName; 
 		}
 		Expect(125);
 		Expr(
-#line  2301 "VBNET.ATG" 
+#line  2302 "VBNET.ATG" 
 out inExpr);
 
-#line  2303 "VBNET.ATG" 
+#line  2304 "VBNET.ATG" 
 		fromClause.InExpression = inExpr;
 		fromClause.EndLocation = t.EndLocation;
 		
 	}
 
 	void ExpressionRangeVariableDeclaration(
-#line  2233 "VBNET.ATG" 
+#line  2234 "VBNET.ATG" 
 out ExpressionRangeVariable variable) {
 
-#line  2235 "VBNET.ATG" 
+#line  2236 "VBNET.ATG" 
 		variable = new ExpressionRangeVariable();
 		variable.StartLocation = la.Location;
 		Expression rhs = null;
 		TypeReference typeName = null;
 		
 		if (
-#line  2241 "VBNET.ATG" 
+#line  2242 "VBNET.ATG" 
 IsIdentifiedExpressionRange()) {
 			Identifier();
 
-#line  2242 "VBNET.ATG" 
+#line  2243 "VBNET.ATG" 
 			variable.Identifier = t.val; 
 			if (la.kind == 50) {
 				lexer.NextToken();
 				TypeName(
-#line  2244 "VBNET.ATG" 
+#line  2245 "VBNET.ATG" 
 out typeName);
 
-#line  2245 "VBNET.ATG" 
+#line  2246 "VBNET.ATG" 
 				variable.Type = typeName; 
 			}
 			Expect(10);
 		}
 		Expr(
-#line  2249 "VBNET.ATG" 
+#line  2250 "VBNET.ATG" 
 out rhs);
 
-#line  2251 "VBNET.ATG" 
+#line  2252 "VBNET.ATG" 
 		variable.Expression = rhs;
 		variable.EndLocation = t.EndLocation;
 		
 	}
 
 	void JoinCondition(
-#line  2308 "VBNET.ATG" 
+#line  2309 "VBNET.ATG" 
 out QueryExpressionJoinConditionVB condition) {
 
-#line  2310 "VBNET.ATG" 
+#line  2311 "VBNET.ATG" 
 		condition = new QueryExpressionJoinConditionVB();
 		condition.StartLocation = la.Location;
 		
@@ -5460,14 +5463,14 @@ out QueryExpressionJoinConditionVB condition) {
 		Expression rhs = null;
 		
 		Expr(
-#line  2316 "VBNET.ATG" 
+#line  2317 "VBNET.ATG" 
 out lhs);
 		Expect(103);
 		Expr(
-#line  2316 "VBNET.ATG" 
+#line  2317 "VBNET.ATG" 
 out rhs);
 
-#line  2318 "VBNET.ATG" 
+#line  2319 "VBNET.ATG" 
 		condition.LeftSide = lhs;
 		condition.RightSide = rhs;
 		condition.EndLocation = t.EndLocation;
@@ -5475,69 +5478,69 @@ out rhs);
 	}
 
 	void Argument(
-#line  2379 "VBNET.ATG" 
+#line  2380 "VBNET.ATG" 
 out Expression argumentexpr) {
 
-#line  2381 "VBNET.ATG" 
+#line  2382 "VBNET.ATG" 
 		Expression expr;
 		argumentexpr = null;
 		string name;
 		
 		if (
-#line  2385 "VBNET.ATG" 
+#line  2386 "VBNET.ATG" 
 IsNamedAssign()) {
 			Identifier();
 
-#line  2385 "VBNET.ATG" 
+#line  2386 "VBNET.ATG" 
 			name = t.val;  
 			Expect(11);
 			Expect(10);
 			Expr(
-#line  2385 "VBNET.ATG" 
+#line  2386 "VBNET.ATG" 
 out expr);
 
-#line  2387 "VBNET.ATG" 
+#line  2388 "VBNET.ATG" 
 			argumentexpr = new NamedArgumentExpression(name, expr);
 			
 		} else if (StartOf(29)) {
 			Expr(
-#line  2390 "VBNET.ATG" 
+#line  2391 "VBNET.ATG" 
 out argumentexpr);
 		} else SynErr(267);
 	}
 
 	void QualIdentAndTypeArguments(
-#line  2456 "VBNET.ATG" 
+#line  2457 "VBNET.ATG" 
 out TypeReference typeref, bool canBeUnbound) {
 
-#line  2457 "VBNET.ATG" 
+#line  2458 "VBNET.ATG" 
 		string name; typeref = null; 
 		Qualident(
-#line  2459 "VBNET.ATG" 
+#line  2460 "VBNET.ATG" 
 out name);
 
-#line  2460 "VBNET.ATG" 
+#line  2461 "VBNET.ATG" 
 		typeref = new TypeReference(name); 
 		if (
-#line  2461 "VBNET.ATG" 
+#line  2462 "VBNET.ATG" 
 la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
 			lexer.NextToken();
 			Expect(155);
 			if (
-#line  2463 "VBNET.ATG" 
+#line  2464 "VBNET.ATG" 
 canBeUnbound && (la.kind == Tokens.CloseParenthesis || la.kind == Tokens.Comma)) {
 
-#line  2464 "VBNET.ATG" 
+#line  2465 "VBNET.ATG" 
 				typeref.GenericTypes.Add(NullTypeReference.Instance); 
 				while (la.kind == 12) {
 					lexer.NextToken();
 
-#line  2465 "VBNET.ATG" 
+#line  2466 "VBNET.ATG" 
 					typeref.GenericTypes.Add(NullTypeReference.Instance); 
 				}
 			} else if (StartOf(7)) {
 				TypeArgumentList(
-#line  2466 "VBNET.ATG" 
+#line  2467 "VBNET.ATG" 
 typeref.GenericTypes);
 			} else SynErr(268);
 			Expect(26);
@@ -5545,24 +5548,24 @@ typeref.GenericTypes);
 	}
 
 	void RankList(
-#line  2503 "VBNET.ATG" 
+#line  2504 "VBNET.ATG" 
 out int i) {
 
-#line  2504 "VBNET.ATG" 
+#line  2505 "VBNET.ATG" 
 		i = 0; 
 		while (la.kind == 12) {
 			lexer.NextToken();
 
-#line  2505 "VBNET.ATG" 
+#line  2506 "VBNET.ATG" 
 			++i; 
 		}
 	}
 
 	void Attribute(
-#line  2544 "VBNET.ATG" 
+#line  2545 "VBNET.ATG" 
 out ASTAttribute attribute) {
 
-#line  2545 "VBNET.ATG" 
+#line  2546 "VBNET.ATG" 
 		string name;
 		List<Expression> positional = new List<Expression>();
 		List<NamedArgumentExpression> named = new List<NamedArgumentExpression>();
@@ -5572,40 +5575,40 @@ out ASTAttribute attribute) {
 			Expect(16);
 		}
 		Qualident(
-#line  2550 "VBNET.ATG" 
+#line  2551 "VBNET.ATG" 
 out name);
 		if (la.kind == 25) {
 			AttributeArguments(
-#line  2551 "VBNET.ATG" 
+#line  2552 "VBNET.ATG" 
 positional, named);
 		}
 
-#line  2553 "VBNET.ATG" 
+#line  2554 "VBNET.ATG" 
 		attribute  = new ASTAttribute(name, positional, named);
 		
 	}
 
 	void AttributeArguments(
-#line  2558 "VBNET.ATG" 
+#line  2559 "VBNET.ATG" 
 List<Expression> positional, List<NamedArgumentExpression> named) {
 
-#line  2560 "VBNET.ATG" 
+#line  2561 "VBNET.ATG" 
 		bool nameFound = false;
 		string name = "";
 		Expression expr;
 		
 		Expect(25);
 		if (
-#line  2566 "VBNET.ATG" 
+#line  2567 "VBNET.ATG" 
 IsNotClosingParenthesis()) {
 			if (
-#line  2568 "VBNET.ATG" 
+#line  2569 "VBNET.ATG" 
 IsNamedAssign()) {
 
-#line  2568 "VBNET.ATG" 
+#line  2569 "VBNET.ATG" 
 				nameFound = true; 
 				IdentifierOrKeyword(
-#line  2569 "VBNET.ATG" 
+#line  2570 "VBNET.ATG" 
 out name);
 				if (la.kind == 11) {
 					lexer.NextToken();
@@ -5613,10 +5616,10 @@ out name);
 				Expect(10);
 			}
 			Expr(
-#line  2571 "VBNET.ATG" 
+#line  2572 "VBNET.ATG" 
 out expr);
 
-#line  2573 "VBNET.ATG" 
+#line  2574 "VBNET.ATG" 
 			if (expr != null) {
 			if (string.IsNullOrEmpty(name)) { positional.Add(expr); }
 			else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
@@ -5625,13 +5628,13 @@ out expr);
 			while (la.kind == 12) {
 				lexer.NextToken();
 				if (
-#line  2581 "VBNET.ATG" 
+#line  2582 "VBNET.ATG" 
 IsNamedAssign()) {
 
-#line  2581 "VBNET.ATG" 
+#line  2582 "VBNET.ATG" 
 					nameFound = true; 
 					IdentifierOrKeyword(
-#line  2582 "VBNET.ATG" 
+#line  2583 "VBNET.ATG" 
 out name);
 					if (la.kind == 11) {
 						lexer.NextToken();
@@ -5639,14 +5642,14 @@ out name);
 					Expect(10);
 				} else if (StartOf(29)) {
 
-#line  2584 "VBNET.ATG" 
+#line  2585 "VBNET.ATG" 
 					if (nameFound) Error("no positional argument after named argument"); 
 				} else SynErr(269);
 				Expr(
-#line  2585 "VBNET.ATG" 
+#line  2586 "VBNET.ATG" 
 out expr);
 
-#line  2585 "VBNET.ATG" 
+#line  2586 "VBNET.ATG" 
 				if (expr != null) { if(name == "") positional.Add(expr);
 				else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
 				}
@@ -5657,10 +5660,10 @@ out expr);
 	}
 
 	void FormalParameter(
-#line  2642 "VBNET.ATG" 
+#line  2643 "VBNET.ATG" 
 out ParameterDeclarationExpression p) {
 
-#line  2644 "VBNET.ATG" 
+#line  2645 "VBNET.ATG" 
 		AttributeSection section;
 		List<AttributeSection> attributes = new List<AttributeSection>();
 		TypeReference type = null;
@@ -5671,36 +5674,36 @@ out ParameterDeclarationExpression p) {
 		
 		while (la.kind == 28) {
 			AttributeSection(
-#line  2653 "VBNET.ATG" 
+#line  2654 "VBNET.ATG" 
 out section);
 
-#line  2653 "VBNET.ATG" 
+#line  2654 "VBNET.ATG" 
 			attributes.Add(section); 
 		}
 		while (StartOf(35)) {
 			ParameterModifier(
-#line  2654 "VBNET.ATG" 
+#line  2655 "VBNET.ATG" 
 mod);
 		}
 		Identifier();
 
-#line  2655 "VBNET.ATG" 
+#line  2656 "VBNET.ATG" 
 		string parameterName = t.val; 
 		if (
-#line  2656 "VBNET.ATG" 
+#line  2657 "VBNET.ATG" 
 IsDims()) {
 			ArrayTypeModifiers(
-#line  2656 "VBNET.ATG" 
+#line  2657 "VBNET.ATG" 
 out arrayModifiers);
 		}
 		if (la.kind == 50) {
 			lexer.NextToken();
 			TypeName(
-#line  2657 "VBNET.ATG" 
+#line  2658 "VBNET.ATG" 
 out type);
 		}
 
-#line  2659 "VBNET.ATG" 
+#line  2660 "VBNET.ATG" 
 		if(type != null) {
 		if (arrayModifiers != null) {
 			if (type.RankSpecifier != null) {
@@ -5716,11 +5719,11 @@ out type);
 		if (la.kind == 10) {
 			lexer.NextToken();
 			Expr(
-#line  2671 "VBNET.ATG" 
+#line  2672 "VBNET.ATG" 
 out expr);
 		}
 
-#line  2673 "VBNET.ATG" 
+#line  2674 "VBNET.ATG" 
 		mod.Check();
 		p = new ParameterDeclarationExpression(type, parameterName, mod.Modifier, expr);
 		p.Attributes = attributes;
@@ -5728,34 +5731,34 @@ out expr);
 	}
 
 	void ParameterModifier(
-#line  3355 "VBNET.ATG" 
+#line  3356 "VBNET.ATG" 
 ParamModifierList m) {
 		if (la.kind == 59) {
 			lexer.NextToken();
 
-#line  3356 "VBNET.ATG" 
+#line  3357 "VBNET.ATG" 
 			m.Add(ParameterModifiers.In); 
 		} else if (la.kind == 56) {
 			lexer.NextToken();
 
-#line  3357 "VBNET.ATG" 
+#line  3358 "VBNET.ATG" 
 			m.Add(ParameterModifiers.Ref); 
 		} else if (la.kind == 160) {
 			lexer.NextToken();
 
-#line  3358 "VBNET.ATG" 
+#line  3359 "VBNET.ATG" 
 			m.Add(ParameterModifiers.Optional); 
 		} else if (la.kind == 167) {
 			lexer.NextToken();
 
-#line  3359 "VBNET.ATG" 
+#line  3360 "VBNET.ATG" 
 			m.Add(ParameterModifiers.Params); 
 		} else SynErr(270);
 	}
 
 	void Statement() {
 
-#line  2702 "VBNET.ATG" 
+#line  2703 "VBNET.ATG" 
 		Statement stmt = null;
 		Location startPos = la.Location;
 		string label = String.Empty;
@@ -5763,27 +5766,27 @@ ParamModifierList m) {
 		
 		if (la.kind == 1 || la.kind == 11) {
 		} else if (
-#line  2708 "VBNET.ATG" 
+#line  2709 "VBNET.ATG" 
 IsLabel()) {
 			LabelName(
-#line  2708 "VBNET.ATG" 
+#line  2709 "VBNET.ATG" 
 out label);
 
-#line  2710 "VBNET.ATG" 
+#line  2711 "VBNET.ATG" 
 			compilationUnit.AddChild(new LabelStatement(t.val));
 			
 			Expect(11);
 			Statement();
 		} else if (StartOf(36)) {
 			EmbeddedStatement(
-#line  2713 "VBNET.ATG" 
+#line  2714 "VBNET.ATG" 
 out stmt);
 
-#line  2713 "VBNET.ATG" 
+#line  2714 "VBNET.ATG" 
 			compilationUnit.AddChild(stmt); 
 		} else SynErr(271);
 
-#line  2716 "VBNET.ATG" 
+#line  2717 "VBNET.ATG" 
 		if (stmt != null) {
 		stmt.StartLocation = startPos;
 		stmt.EndLocation = t.Location;
@@ -5792,30 +5795,30 @@ out stmt);
 	}
 
 	void LabelName(
-#line  3131 "VBNET.ATG" 
+#line  3132 "VBNET.ATG" 
 out string name) {
 
-#line  3133 "VBNET.ATG" 
+#line  3134 "VBNET.ATG" 
 		name = String.Empty;
 		
 		if (StartOf(14)) {
 			Identifier();
 
-#line  3135 "VBNET.ATG" 
+#line  3136 "VBNET.ATG" 
 			name = t.val; 
 		} else if (la.kind == 5) {
 			lexer.NextToken();
 
-#line  3136 "VBNET.ATG" 
+#line  3137 "VBNET.ATG" 
 			name = t.val; 
 		} else SynErr(272);
 	}
 
 	void EmbeddedStatement(
-#line  2755 "VBNET.ATG" 
+#line  2756 "VBNET.ATG" 
 out Statement statement) {
 
-#line  2757 "VBNET.ATG" 
+#line  2758 "VBNET.ATG" 
 		Statement embeddedStatement = null;
 		statement = null;
 		Expression expr = null;
@@ -5825,224 +5828,224 @@ out Statement statement) {
 		if (la.kind == 107) {
 			lexer.NextToken();
 
-#line  2763 "VBNET.ATG" 
+#line  2764 "VBNET.ATG" 
 			ExitType exitType = ExitType.None; 
 			switch (la.kind) {
 			case 195: {
 				lexer.NextToken();
 
-#line  2765 "VBNET.ATG" 
+#line  2766 "VBNET.ATG" 
 				exitType = ExitType.Sub; 
 				break;
 			}
 			case 114: {
 				lexer.NextToken();
 
-#line  2767 "VBNET.ATG" 
+#line  2768 "VBNET.ATG" 
 				exitType = ExitType.Function; 
 				break;
 			}
 			case 171: {
 				lexer.NextToken();
 
-#line  2769 "VBNET.ATG" 
+#line  2770 "VBNET.ATG" 
 				exitType = ExitType.Property; 
 				break;
 			}
 			case 95: {
 				lexer.NextToken();
 
-#line  2771 "VBNET.ATG" 
+#line  2772 "VBNET.ATG" 
 				exitType = ExitType.Do; 
 				break;
 			}
 			case 111: {
 				lexer.NextToken();
 
-#line  2773 "VBNET.ATG" 
+#line  2774 "VBNET.ATG" 
 				exitType = ExitType.For; 
 				break;
 			}
 			case 203: {
 				lexer.NextToken();
 
-#line  2775 "VBNET.ATG" 
+#line  2776 "VBNET.ATG" 
 				exitType = ExitType.Try; 
 				break;
 			}
 			case 216: {
 				lexer.NextToken();
 
-#line  2777 "VBNET.ATG" 
+#line  2778 "VBNET.ATG" 
 				exitType = ExitType.While; 
 				break;
 			}
 			case 182: {
 				lexer.NextToken();
 
-#line  2779 "VBNET.ATG" 
+#line  2780 "VBNET.ATG" 
 				exitType = ExitType.Select; 
 				break;
 			}
 			default: SynErr(273); break;
 			}
 
-#line  2781 "VBNET.ATG" 
+#line  2782 "VBNET.ATG" 
 			statement = new ExitStatement(exitType); 
 		} else if (la.kind == 203) {
 			TryStatement(
-#line  2782 "VBNET.ATG" 
+#line  2783 "VBNET.ATG" 
 out statement);
 		} else if (la.kind == 76) {
 			lexer.NextToken();
 
-#line  2783 "VBNET.ATG" 
+#line  2784 "VBNET.ATG" 
 			ContinueType continueType = ContinueType.None; 
 			if (la.kind == 95 || la.kind == 111 || la.kind == 216) {
 				if (la.kind == 95) {
 					lexer.NextToken();
 
-#line  2783 "VBNET.ATG" 
+#line  2784 "VBNET.ATG" 
 					continueType = ContinueType.Do; 
 				} else if (la.kind == 111) {
 					lexer.NextToken();
 
-#line  2783 "VBNET.ATG" 
+#line  2784 "VBNET.ATG" 
 					continueType = ContinueType.For; 
 				} else {
 					lexer.NextToken();
 
-#line  2783 "VBNET.ATG" 
+#line  2784 "VBNET.ATG" 
 					continueType = ContinueType.While; 
 				}
 			}
 
-#line  2783 "VBNET.ATG" 
+#line  2784 "VBNET.ATG" 
 			statement = new ContinueStatement(continueType); 
 		} else if (la.kind == 200) {
 			lexer.NextToken();
 			if (StartOf(29)) {
 				Expr(
-#line  2785 "VBNET.ATG" 
+#line  2786 "VBNET.ATG" 
 out expr);
 			}
 
-#line  2785 "VBNET.ATG" 
+#line  2786 "VBNET.ATG" 
 			statement = new ThrowStatement(expr); 
 		} else if (la.kind == 180) {
 			lexer.NextToken();
 			if (StartOf(29)) {
 				Expr(
-#line  2787 "VBNET.ATG" 
+#line  2788 "VBNET.ATG" 
 out expr);
 			}
 
-#line  2787 "VBNET.ATG" 
+#line  2788 "VBNET.ATG" 
 			statement = new ReturnStatement(expr); 
 		} else if (la.kind == 196) {
 			lexer.NextToken();
 			Expr(
-#line  2789 "VBNET.ATG" 
+#line  2790 "VBNET.ATG" 
 out expr);
 			EndOfStmt();
 			Block(
-#line  2789 "VBNET.ATG" 
+#line  2790 "VBNET.ATG" 
 out embeddedStatement);
 			Expect(100);
 			Expect(196);
 
-#line  2790 "VBNET.ATG" 
+#line  2791 "VBNET.ATG" 
 			statement = new LockStatement(expr, embeddedStatement); 
 		} else if (la.kind == 174) {
 			lexer.NextToken();
 			Identifier();
 
-#line  2792 "VBNET.ATG" 
+#line  2793 "VBNET.ATG" 
 			name = t.val; 
 			if (la.kind == 25) {
 				lexer.NextToken();
 				if (StartOf(37)) {
 					ArgumentList(
-#line  2793 "VBNET.ATG" 
+#line  2794 "VBNET.ATG" 
 out p);
 				}
 				Expect(26);
 			}
 
-#line  2795 "VBNET.ATG" 
+#line  2796 "VBNET.ATG" 
 			statement = new RaiseEventStatement(name, p);
 			
 		} else if (la.kind == 218) {
 			WithStatement(
-#line  2798 "VBNET.ATG" 
+#line  2799 "VBNET.ATG" 
 out statement);
 		} else if (la.kind == 43) {
 			lexer.NextToken();
 
-#line  2800 "VBNET.ATG" 
+#line  2801 "VBNET.ATG" 
 			Expression handlerExpr = null; 
 			Expr(
-#line  2801 "VBNET.ATG" 
+#line  2802 "VBNET.ATG" 
 out expr);
 			Expect(12);
 			Expr(
-#line  2801 "VBNET.ATG" 
+#line  2802 "VBNET.ATG" 
 out handlerExpr);
 
-#line  2803 "VBNET.ATG" 
+#line  2804 "VBNET.ATG" 
 			statement = new AddHandlerStatement(expr, handlerExpr);
 			
 		} else if (la.kind == 178) {
 			lexer.NextToken();
 
-#line  2806 "VBNET.ATG" 
+#line  2807 "VBNET.ATG" 
 			Expression handlerExpr = null; 
 			Expr(
-#line  2807 "VBNET.ATG" 
+#line  2808 "VBNET.ATG" 
 out expr);
 			Expect(12);
 			Expr(
-#line  2807 "VBNET.ATG" 
+#line  2808 "VBNET.ATG" 
 out handlerExpr);
 
-#line  2809 "VBNET.ATG" 
+#line  2810 "VBNET.ATG" 
 			statement = new RemoveHandlerStatement(expr, handlerExpr);
 			
 		} else if (la.kind == 216) {
 			lexer.NextToken();
 			Expr(
-#line  2812 "VBNET.ATG" 
+#line  2813 "VBNET.ATG" 
 out expr);
 			EndOfStmt();
 			Block(
-#line  2813 "VBNET.ATG" 
+#line  2814 "VBNET.ATG" 
 out embeddedStatement);
 			Expect(100);
 			Expect(216);
 
-#line  2815 "VBNET.ATG" 
+#line  2816 "VBNET.ATG" 
 			statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.Start);
 			
 		} else if (la.kind == 95) {
 			lexer.NextToken();
 
-#line  2820 "VBNET.ATG" 
+#line  2821 "VBNET.ATG" 
 			ConditionType conditionType = ConditionType.None;
 			
 			if (la.kind == 209 || la.kind == 216) {
 				WhileOrUntil(
-#line  2823 "VBNET.ATG" 
+#line  2824 "VBNET.ATG" 
 out conditionType);
 				Expr(
-#line  2823 "VBNET.ATG" 
+#line  2824 "VBNET.ATG" 
 out expr);
 				EndOfStmt();
 				Block(
-#line  2824 "VBNET.ATG" 
+#line  2825 "VBNET.ATG" 
 out embeddedStatement);
 				Expect(138);
 
-#line  2827 "VBNET.ATG" 
+#line  2828 "VBNET.ATG" 
 				statement = new DoLoopStatement(expr, 
 				                               embeddedStatement, 
 				                               conditionType == ConditionType.While ? ConditionType.DoWhile : conditionType, 
@@ -6051,26 +6054,26 @@ out embeddedStatement);
 			} else if (la.kind == 1 || la.kind == 11) {
 				EndOfStmt();
 				Block(
-#line  2834 "VBNET.ATG" 
+#line  2835 "VBNET.ATG" 
 out embeddedStatement);
 				Expect(138);
 				if (la.kind == 209 || la.kind == 216) {
 					WhileOrUntil(
-#line  2835 "VBNET.ATG" 
+#line  2836 "VBNET.ATG" 
 out conditionType);
 					Expr(
-#line  2835 "VBNET.ATG" 
+#line  2836 "VBNET.ATG" 
 out expr);
 				}
 
-#line  2837 "VBNET.ATG" 
+#line  2838 "VBNET.ATG" 
 				statement = new DoLoopStatement(expr, embeddedStatement, conditionType, ConditionPosition.End);
 				
 			} else SynErr(274);
 		} else if (la.kind == 111) {
 			lexer.NextToken();
 
-#line  2842 "VBNET.ATG" 
+#line  2843 "VBNET.ATG" 
 			Expression group = null;
 			TypeReference typeReference;
 			string        typeName;
@@ -6079,24 +6082,24 @@ out expr);
 			if (la.kind == 97) {
 				lexer.NextToken();
 				LoopControlVariable(
-#line  2849 "VBNET.ATG" 
+#line  2850 "VBNET.ATG" 
 out typeReference, out typeName);
 				Expect(125);
 				Expr(
-#line  2850 "VBNET.ATG" 
+#line  2851 "VBNET.ATG" 
 out group);
 				EndOfStmt();
 				Block(
-#line  2851 "VBNET.ATG" 
+#line  2852 "VBNET.ATG" 
 out embeddedStatement);
 				Expect(149);
 				if (StartOf(29)) {
 					Expr(
-#line  2852 "VBNET.ATG" 
+#line  2853 "VBNET.ATG" 
 out expr);
 				}
 
-#line  2854 "VBNET.ATG" 
+#line  2855 "VBNET.ATG" 
 				statement = new ForeachStatement(typeReference, 
 				                                typeName,
 				                                group, 
@@ -6108,7 +6111,7 @@ out expr);
 				
 			} else if (StartOf(38)) {
 
-#line  2865 "VBNET.ATG" 
+#line  2866 "VBNET.ATG" 
 				Expression start = null;
 				Expression end = null;
 				Expression step = null;
@@ -6117,59 +6120,59 @@ out expr);
 				List<Expression> nextExpressions = null;
 				
 				if (
-#line  2872 "VBNET.ATG" 
+#line  2873 "VBNET.ATG" 
 IsLoopVariableDeclaration()) {
 					LoopControlVariable(
-#line  2873 "VBNET.ATG" 
+#line  2874 "VBNET.ATG" 
 out typeReference, out typeName);
 				} else {
 
-#line  2875 "VBNET.ATG" 
+#line  2876 "VBNET.ATG" 
 					typeReference = null; typeName = null; 
 					SimpleExpr(
-#line  2876 "VBNET.ATG" 
+#line  2877 "VBNET.ATG" 
 out variableExpr);
 				}
 				Expect(10);
 				Expr(
-#line  2878 "VBNET.ATG" 
+#line  2879 "VBNET.ATG" 
 out start);
 				Expect(201);
 				Expr(
-#line  2878 "VBNET.ATG" 
+#line  2879 "VBNET.ATG" 
 out end);
 				if (la.kind == 190) {
 					lexer.NextToken();
 					Expr(
-#line  2878 "VBNET.ATG" 
+#line  2879 "VBNET.ATG" 
 out step);
 				}
 				EndOfStmt();
 				Block(
-#line  2879 "VBNET.ATG" 
+#line  2880 "VBNET.ATG" 
 out embeddedStatement);
 				Expect(149);
 				if (StartOf(29)) {
 					Expr(
-#line  2882 "VBNET.ATG" 
+#line  2883 "VBNET.ATG" 
 out nextExpr);
 
-#line  2884 "VBNET.ATG" 
+#line  2885 "VBNET.ATG" 
 					nextExpressions = new List<Expression>();
 					nextExpressions.Add(nextExpr);
 					
 					while (la.kind == 12) {
 						lexer.NextToken();
 						Expr(
-#line  2887 "VBNET.ATG" 
+#line  2888 "VBNET.ATG" 
 out nextExpr);
 
-#line  2887 "VBNET.ATG" 
+#line  2888 "VBNET.ATG" 
 						nextExpressions.Add(nextExpr); 
 					}
 				}
 
-#line  2890 "VBNET.ATG" 
+#line  2891 "VBNET.ATG" 
 				statement = new ForNextStatement {
 				TypeReference = typeReference,
 				VariableName = typeName, 
@@ -6185,27 +6188,27 @@ out nextExpr);
 		} else if (la.kind == 105) {
 			lexer.NextToken();
 			Expr(
-#line  2903 "VBNET.ATG" 
+#line  2904 "VBNET.ATG" 
 out expr);
 
-#line  2903 "VBNET.ATG" 
+#line  2904 "VBNET.ATG" 
 			statement = new ErrorStatement(expr); 
 		} else if (la.kind == 176) {
 			lexer.NextToken();
 
-#line  2905 "VBNET.ATG" 
+#line  2906 "VBNET.ATG" 
 			bool isPreserve = false; 
 			if (la.kind == 169) {
 				lexer.NextToken();
 
-#line  2905 "VBNET.ATG" 
+#line  2906 "VBNET.ATG" 
 				isPreserve = true; 
 			}
 			ReDimClause(
-#line  2906 "VBNET.ATG" 
+#line  2907 "VBNET.ATG" 
 out expr);
 
-#line  2908 "VBNET.ATG" 
+#line  2909 "VBNET.ATG" 
 			ReDimStatement reDimStatement = new ReDimStatement(isPreserve);
 			statement = reDimStatement;
 			SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression);
@@ -6213,48 +6216,48 @@ out expr);
 			while (la.kind == 12) {
 				lexer.NextToken();
 				ReDimClause(
-#line  2912 "VBNET.ATG" 
+#line  2913 "VBNET.ATG" 
 out expr);
 
-#line  2913 "VBNET.ATG" 
+#line  2914 "VBNET.ATG" 
 				SafeAdd(reDimStatement, reDimStatement.ReDimClauses, expr as InvocationExpression); 
 			}
 		} else if (la.kind == 104) {
 			lexer.NextToken();
 			Expr(
-#line  2917 "VBNET.ATG" 
+#line  2918 "VBNET.ATG" 
 out expr);
 
-#line  2919 "VBNET.ATG" 
+#line  2920 "VBNET.ATG" 
 			EraseStatement eraseStatement = new EraseStatement();
 			if (expr != null) { SafeAdd(eraseStatement, eraseStatement.Expressions, expr);}
 			
 			while (la.kind == 12) {
 				lexer.NextToken();
 				Expr(
-#line  2922 "VBNET.ATG" 
+#line  2923 "VBNET.ATG" 
 out expr);
 
-#line  2922 "VBNET.ATG" 
+#line  2923 "VBNET.ATG" 
 				if (expr != null) { SafeAdd(eraseStatement, eraseStatement.Expressions, expr); }
 			}
 
-#line  2923 "VBNET.ATG" 
+#line  2924 "VBNET.ATG" 
 			statement = eraseStatement; 
 		} else if (la.kind == 191) {
 			lexer.NextToken();
 
-#line  2925 "VBNET.ATG" 
+#line  2926 "VBNET.ATG" 
 			statement = new StopStatement(); 
 		} else if (
-#line  2927 "VBNET.ATG" 
+#line  2928 "VBNET.ATG" 
 la.kind == Tokens.If) {
 			Expect(122);
 
-#line  2928 "VBNET.ATG" 
+#line  2929 "VBNET.ATG" 
 			Location ifStartLocation = t.Location; 
 			Expr(
-#line  2928 "VBNET.ATG" 
+#line  2929 "VBNET.ATG" 
 out expr);
 			if (la.kind == 199) {
 				lexer.NextToken();
@@ -6262,46 +6265,46 @@ out expr);
 			if (la.kind == 1 || la.kind == 11) {
 				EndOfStmt();
 				Block(
-#line  2931 "VBNET.ATG" 
+#line  2932 "VBNET.ATG" 
 out embeddedStatement);
 
-#line  2933 "VBNET.ATG" 
+#line  2934 "VBNET.ATG" 
 				IfElseStatement ifStatement = new IfElseStatement(expr, embeddedStatement);
 				ifStatement.StartLocation = ifStartLocation;
 				Location elseIfStart;
 				
 				while (la.kind == 99 || 
-#line  2939 "VBNET.ATG" 
+#line  2940 "VBNET.ATG" 
 IsElseIf()) {
 					if (
-#line  2939 "VBNET.ATG" 
+#line  2940 "VBNET.ATG" 
 IsElseIf()) {
 						Expect(98);
 
-#line  2939 "VBNET.ATG" 
+#line  2940 "VBNET.ATG" 
 						elseIfStart = t.Location; 
 						Expect(122);
 					} else {
 						lexer.NextToken();
 
-#line  2940 "VBNET.ATG" 
+#line  2941 "VBNET.ATG" 
 						elseIfStart = t.Location; 
 					}
 
-#line  2942 "VBNET.ATG" 
+#line  2943 "VBNET.ATG" 
 					Expression condition = null; Statement block = null; 
 					Expr(
-#line  2943 "VBNET.ATG" 
+#line  2944 "VBNET.ATG" 
 out condition);
 					if (la.kind == 199) {
 						lexer.NextToken();
 					}
 					EndOfStmt();
 					Block(
-#line  2944 "VBNET.ATG" 
+#line  2945 "VBNET.ATG" 
 out block);
 
-#line  2946 "VBNET.ATG" 
+#line  2947 "VBNET.ATG" 
 					ElseIfSection elseIfSection = new ElseIfSection(condition, block);
 					elseIfSection.StartLocation = elseIfStart;
 					elseIfSection.EndLocation = t.Location;
@@ -6315,39 +6318,39 @@ out block);
 						EndOfStmt();
 					}
 					Block(
-#line  2955 "VBNET.ATG" 
+#line  2956 "VBNET.ATG" 
 out embeddedStatement);
 
-#line  2957 "VBNET.ATG" 
+#line  2958 "VBNET.ATG" 
 					ifStatement.FalseStatement.Add(embeddedStatement);
 					
 				}
 				Expect(100);
 				Expect(122);
 
-#line  2961 "VBNET.ATG" 
+#line  2962 "VBNET.ATG" 
 				ifStatement.EndLocation = t.Location;
 				statement = ifStatement;
 				
 			} else if (StartOf(39)) {
 
-#line  2966 "VBNET.ATG" 
+#line  2967 "VBNET.ATG" 
 				IfElseStatement ifStatement = new IfElseStatement(expr);
 				ifStatement.StartLocation = ifStartLocation;
 				
 				SingleLineStatementList(
-#line  2969 "VBNET.ATG" 
+#line  2970 "VBNET.ATG" 
 ifStatement.TrueStatement);
 				if (la.kind == 98) {
 					lexer.NextToken();
 					if (StartOf(39)) {
 						SingleLineStatementList(
-#line  2972 "VBNET.ATG" 
+#line  2973 "VBNET.ATG" 
 ifStatement.FalseStatement);
 					}
 				}
 
-#line  2974 "VBNET.ATG" 
+#line  2975 "VBNET.ATG" 
 				ifStatement.EndLocation = t.Location; statement = ifStatement; 
 			} else SynErr(276);
 		} else if (la.kind == 182) {
@@ -6356,82 +6359,82 @@ ifStatement.FalseStatement);
 				lexer.NextToken();
 			}
 			Expr(
-#line  2977 "VBNET.ATG" 
+#line  2978 "VBNET.ATG" 
 out expr);
 			EndOfStmt();
 
-#line  2978 "VBNET.ATG" 
+#line  2979 "VBNET.ATG" 
 			List<SwitchSection> selectSections = new List<SwitchSection>();
 			Statement block = null;
 			
 			while (la.kind == 61) {
 
-#line  2982 "VBNET.ATG" 
+#line  2983 "VBNET.ATG" 
 				List<CaseLabel> caseClauses = null; Location caseLocation = la.Location; 
 				lexer.NextToken();
 				CaseClauses(
-#line  2983 "VBNET.ATG" 
+#line  2984 "VBNET.ATG" 
 out caseClauses);
 				if (
-#line  2983 "VBNET.ATG" 
+#line  2984 "VBNET.ATG" 
 IsNotStatementSeparator()) {
 					lexer.NextToken();
 				}
 				EndOfStmt();
 
-#line  2985 "VBNET.ATG" 
+#line  2986 "VBNET.ATG" 
 				SwitchSection selectSection = new SwitchSection(caseClauses);
 				selectSection.StartLocation = caseLocation;
 				
 				Block(
-#line  2988 "VBNET.ATG" 
+#line  2989 "VBNET.ATG" 
 out block);
 
-#line  2990 "VBNET.ATG" 
+#line  2991 "VBNET.ATG" 
 				selectSection.Children = block.Children;
 				selectSection.EndLocation = t.EndLocation;
 				selectSections.Add(selectSection);
 				
 			}
 
-#line  2996 "VBNET.ATG" 
+#line  2997 "VBNET.ATG" 
 			statement = new SwitchStatement(expr, selectSections);
 			
 			Expect(100);
 			Expect(182);
 		} else if (la.kind == 157) {
 
-#line  2999 "VBNET.ATG" 
+#line  3000 "VBNET.ATG" 
 			OnErrorStatement onErrorStatement = null; 
 			OnErrorStatement(
-#line  3000 "VBNET.ATG" 
+#line  3001 "VBNET.ATG" 
 out onErrorStatement);
 
-#line  3000 "VBNET.ATG" 
+#line  3001 "VBNET.ATG" 
 			statement = onErrorStatement; 
 		} else if (la.kind == 119) {
 
-#line  3001 "VBNET.ATG" 
+#line  3002 "VBNET.ATG" 
 			GotoStatement goToStatement = null; 
 			GotoStatement(
-#line  3002 "VBNET.ATG" 
+#line  3003 "VBNET.ATG" 
 out goToStatement);
 
-#line  3002 "VBNET.ATG" 
+#line  3003 "VBNET.ATG" 
 			statement = goToStatement; 
 		} else if (la.kind == 179) {
 
-#line  3003 "VBNET.ATG" 
+#line  3004 "VBNET.ATG" 
 			ResumeStatement resumeStatement = null; 
 			ResumeStatement(
-#line  3004 "VBNET.ATG" 
+#line  3005 "VBNET.ATG" 
 out resumeStatement);
 
-#line  3004 "VBNET.ATG" 
+#line  3005 "VBNET.ATG" 
 			statement = resumeStatement; 
 		} else if (StartOf(38)) {
 
-#line  3007 "VBNET.ATG" 
+#line  3008 "VBNET.ATG" 
 			Expression val = null;
 			AssignmentOperatorType op;
 			
@@ -6439,25 +6442,25 @@ out resumeStatement);
 			                        la.kind == Tokens.Not   || la.kind == Tokens.Times;
 			
 			SimpleExpr(
-#line  3013 "VBNET.ATG" 
+#line  3014 "VBNET.ATG" 
 out expr);
 			if (StartOf(40)) {
 				AssignmentOperator(
-#line  3015 "VBNET.ATG" 
+#line  3016 "VBNET.ATG" 
 out op);
 				Expr(
-#line  3015 "VBNET.ATG" 
+#line  3016 "VBNET.ATG" 
 out val);
 
-#line  3015 "VBNET.ATG" 
+#line  3016 "VBNET.ATG" 
 				expr = new AssignmentExpression(expr, op, val); 
 			} else if (la.kind == 1 || la.kind == 11 || la.kind == 98) {
 
-#line  3016 "VBNET.ATG" 
+#line  3017 "VBNET.ATG" 
 				if (mustBeAssignment) Error("error in assignment."); 
 			} else SynErr(277);
 
-#line  3019 "VBNET.ATG" 
+#line  3020 "VBNET.ATG" 
 			// a field reference expression that stands alone is a
 			// invocation expression without parantheses and arguments
 			if(expr is MemberReferenceExpression || expr is IdentifierExpression) {
@@ -6468,63 +6471,63 @@ out val);
 		} else if (la.kind == 60) {
 			lexer.NextToken();
 			SimpleExpr(
-#line  3026 "VBNET.ATG" 
+#line  3027 "VBNET.ATG" 
 out expr);
 
-#line  3026 "VBNET.ATG" 
+#line  3027 "VBNET.ATG" 
 			statement = new ExpressionStatement(expr); 
 		} else if (la.kind == 211) {
 			lexer.NextToken();
 
-#line  3028 "VBNET.ATG" 
+#line  3029 "VBNET.ATG" 
 			Statement block;  
 			if (
-#line  3029 "VBNET.ATG" 
+#line  3030 "VBNET.ATG" 
 Peek(1).kind == Tokens.As) {
 
-#line  3030 "VBNET.ATG" 
+#line  3031 "VBNET.ATG" 
 				LocalVariableDeclaration resourceAquisition = new LocalVariableDeclaration(Modifiers.None); 
 				VariableDeclarator(
-#line  3031 "VBNET.ATG" 
+#line  3032 "VBNET.ATG" 
 resourceAquisition.Variables);
 				while (la.kind == 12) {
 					lexer.NextToken();
 					VariableDeclarator(
-#line  3033 "VBNET.ATG" 
+#line  3034 "VBNET.ATG" 
 resourceAquisition.Variables);
 				}
 				Block(
-#line  3035 "VBNET.ATG" 
+#line  3036 "VBNET.ATG" 
 out block);
 
-#line  3037 "VBNET.ATG" 
+#line  3038 "VBNET.ATG" 
 				statement = new UsingStatement(resourceAquisition, block);
 				
 			} else if (StartOf(29)) {
 				Expr(
-#line  3039 "VBNET.ATG" 
+#line  3040 "VBNET.ATG" 
 out expr);
 				Block(
-#line  3040 "VBNET.ATG" 
+#line  3041 "VBNET.ATG" 
 out block);
 
-#line  3041 "VBNET.ATG" 
+#line  3042 "VBNET.ATG" 
 				statement = new UsingStatement(new ExpressionStatement(expr), block); 
 			} else SynErr(278);
 			Expect(100);
 			Expect(211);
 		} else if (StartOf(41)) {
 			LocalDeclarationStatement(
-#line  3044 "VBNET.ATG" 
+#line  3045 "VBNET.ATG" 
 out statement);
 		} else SynErr(279);
 	}
 
 	void LocalDeclarationStatement(
-#line  2724 "VBNET.ATG" 
+#line  2725 "VBNET.ATG" 
 out Statement statement) {
 
-#line  2726 "VBNET.ATG" 
+#line  2727 "VBNET.ATG" 
 		ModifierList m = new ModifierList();
 		LocalVariableDeclaration localVariableDeclaration;
 		bool dimfound = false;
@@ -6533,22 +6536,22 @@ out Statement statement) {
 			if (la.kind == 75) {
 				lexer.NextToken();
 
-#line  2732 "VBNET.ATG" 
+#line  2733 "VBNET.ATG" 
 				m.Add(Modifiers.Const, t.Location); 
 			} else if (la.kind == 189) {
 				lexer.NextToken();
 
-#line  2733 "VBNET.ATG" 
+#line  2734 "VBNET.ATG" 
 				m.Add(Modifiers.Static, t.Location); 
 			} else {
 				lexer.NextToken();
 
-#line  2734 "VBNET.ATG" 
+#line  2735 "VBNET.ATG" 
 				dimfound = true; 
 			}
 		}
 
-#line  2737 "VBNET.ATG" 
+#line  2738 "VBNET.ATG" 
 		if(dimfound && (m.Modifier & Modifiers.Const) != 0) {
 		Error("Dim is not allowed on constants.");
 		}
@@ -6561,135 +6564,135 @@ out Statement statement) {
 		localVariableDeclaration.StartLocation = t.Location;
 		
 		VariableDeclarator(
-#line  2748 "VBNET.ATG" 
+#line  2749 "VBNET.ATG" 
 localVariableDeclaration.Variables);
 		while (la.kind == 12) {
 			lexer.NextToken();
 			VariableDeclarator(
-#line  2749 "VBNET.ATG" 
+#line  2750 "VBNET.ATG" 
 localVariableDeclaration.Variables);
 		}
 
-#line  2751 "VBNET.ATG" 
+#line  2752 "VBNET.ATG" 
 		statement = localVariableDeclaration;
 		
 	}
 
 	void TryStatement(
-#line  3245 "VBNET.ATG" 
+#line  3246 "VBNET.ATG" 
 out Statement tryStatement) {
 
-#line  3247 "VBNET.ATG" 
+#line  3248 "VBNET.ATG" 
 		Statement blockStmt = null, finallyStmt = null;List<CatchClause> catchClauses = null;
 		
 		Expect(203);
 		EndOfStmt();
 		Block(
-#line  3250 "VBNET.ATG" 
+#line  3251 "VBNET.ATG" 
 out blockStmt);
 		if (la.kind == 62 || la.kind == 100 || la.kind == 110) {
 			CatchClauses(
-#line  3251 "VBNET.ATG" 
+#line  3252 "VBNET.ATG" 
 out catchClauses);
 		}
 		if (la.kind == 110) {
 			lexer.NextToken();
 			EndOfStmt();
 			Block(
-#line  3252 "VBNET.ATG" 
+#line  3253 "VBNET.ATG" 
 out finallyStmt);
 		}
 		Expect(100);
 		Expect(203);
 
-#line  3255 "VBNET.ATG" 
+#line  3256 "VBNET.ATG" 
 		tryStatement = new TryCatchStatement(blockStmt, catchClauses, finallyStmt);
 		
 	}
 
 	void WithStatement(
-#line  3225 "VBNET.ATG" 
+#line  3226 "VBNET.ATG" 
 out Statement withStatement) {
 
-#line  3227 "VBNET.ATG" 
+#line  3228 "VBNET.ATG" 
 		Statement blockStmt = null;
 		Expression expr = null;
 		
 		Expect(218);
 
-#line  3230 "VBNET.ATG" 
+#line  3231 "VBNET.ATG" 
 		Location start = t.Location; 
 		Expr(
-#line  3231 "VBNET.ATG" 
+#line  3232 "VBNET.ATG" 
 out expr);
 		EndOfStmt();
 
-#line  3233 "VBNET.ATG" 
+#line  3234 "VBNET.ATG" 
 		withStatement = new WithStatement(expr);
 		withStatement.StartLocation = start;
 		
 		Block(
-#line  3236 "VBNET.ATG" 
+#line  3237 "VBNET.ATG" 
 out blockStmt);
 
-#line  3238 "VBNET.ATG" 
+#line  3239 "VBNET.ATG" 
 		((WithStatement)withStatement).Body = (BlockStatement)blockStmt;
 		
 		Expect(100);
 		Expect(218);
 
-#line  3241 "VBNET.ATG" 
+#line  3242 "VBNET.ATG" 
 		withStatement.EndLocation = t.Location; 
 	}
 
 	void WhileOrUntil(
-#line  3218 "VBNET.ATG" 
+#line  3219 "VBNET.ATG" 
 out ConditionType conditionType) {
 
-#line  3219 "VBNET.ATG" 
+#line  3220 "VBNET.ATG" 
 		conditionType = ConditionType.None; 
 		if (la.kind == 216) {
 			lexer.NextToken();
 
-#line  3220 "VBNET.ATG" 
+#line  3221 "VBNET.ATG" 
 			conditionType = ConditionType.While; 
 		} else if (la.kind == 209) {
 			lexer.NextToken();
 
-#line  3221 "VBNET.ATG" 
+#line  3222 "VBNET.ATG" 
 			conditionType = ConditionType.Until; 
 		} else SynErr(280);
 	}
 
 	void LoopControlVariable(
-#line  3061 "VBNET.ATG" 
+#line  3062 "VBNET.ATG" 
 out TypeReference type, out string name) {
 
-#line  3062 "VBNET.ATG" 
+#line  3063 "VBNET.ATG" 
 		ArrayList arrayModifiers = null;
 		type = null;
 		
 		Qualident(
-#line  3066 "VBNET.ATG" 
+#line  3067 "VBNET.ATG" 
 out name);
 		if (
-#line  3067 "VBNET.ATG" 
+#line  3068 "VBNET.ATG" 
 IsDims()) {
 			ArrayTypeModifiers(
-#line  3067 "VBNET.ATG" 
+#line  3068 "VBNET.ATG" 
 out arrayModifiers);
 		}
 		if (la.kind == 50) {
 			lexer.NextToken();
 			TypeName(
-#line  3068 "VBNET.ATG" 
+#line  3069 "VBNET.ATG" 
 out type);
 
-#line  3068 "VBNET.ATG" 
+#line  3069 "VBNET.ATG" 
 			if (name.IndexOf('.') > 0) { Error("No type def for 'for each' member indexer allowed."); } 
 		}
 
-#line  3070 "VBNET.ATG" 
+#line  3071 "VBNET.ATG" 
 		if (type != null) {
 		if(type.RankSpecifier != null && arrayModifiers != null) {
 			Error("array rank only allowed one time");
@@ -6701,34 +6704,34 @@ out type);
 	}
 
 	void ReDimClause(
-#line  3140 "VBNET.ATG" 
+#line  3141 "VBNET.ATG" 
 out Expression expr) {
 		SimpleNonInvocationExpression(
-#line  3142 "VBNET.ATG" 
+#line  3143 "VBNET.ATG" 
 out expr);
 		ReDimClauseInternal(
-#line  3143 "VBNET.ATG" 
+#line  3144 "VBNET.ATG" 
 ref expr);
 	}
 
 	void SingleLineStatementList(
-#line  3047 "VBNET.ATG" 
+#line  3048 "VBNET.ATG" 
 List<Statement> list) {
 
-#line  3048 "VBNET.ATG" 
+#line  3049 "VBNET.ATG" 
 		Statement embeddedStatement = null; 
 		if (la.kind == 100) {
 			lexer.NextToken();
 
-#line  3050 "VBNET.ATG" 
+#line  3051 "VBNET.ATG" 
 			embeddedStatement = new EndStatement(); 
 		} else if (StartOf(36)) {
 			EmbeddedStatement(
-#line  3051 "VBNET.ATG" 
+#line  3052 "VBNET.ATG" 
 out embeddedStatement);
 		} else SynErr(281);
 
-#line  3052 "VBNET.ATG" 
+#line  3053 "VBNET.ATG" 
 		if (embeddedStatement != null) list.Add(embeddedStatement); 
 		while (la.kind == 11) {
 			lexer.NextToken();
@@ -6738,62 +6741,62 @@ out embeddedStatement);
 			if (la.kind == 100) {
 				lexer.NextToken();
 
-#line  3054 "VBNET.ATG" 
+#line  3055 "VBNET.ATG" 
 				embeddedStatement = new EndStatement(); 
 			} else if (StartOf(36)) {
 				EmbeddedStatement(
-#line  3055 "VBNET.ATG" 
+#line  3056 "VBNET.ATG" 
 out embeddedStatement);
 			} else SynErr(282);
 
-#line  3056 "VBNET.ATG" 
+#line  3057 "VBNET.ATG" 
 			if (embeddedStatement != null) list.Add(embeddedStatement); 
 		}
 	}
 
 	void CaseClauses(
-#line  3178 "VBNET.ATG" 
+#line  3179 "VBNET.ATG" 
 out List<CaseLabel> caseClauses) {
 
-#line  3180 "VBNET.ATG" 
+#line  3181 "VBNET.ATG" 
 		caseClauses = new List<CaseLabel>();
 		CaseLabel caseClause = null;
 		
 		CaseClause(
-#line  3183 "VBNET.ATG" 
+#line  3184 "VBNET.ATG" 
 out caseClause);
 
-#line  3183 "VBNET.ATG" 
+#line  3184 "VBNET.ATG" 
 		if (caseClause != null) { caseClauses.Add(caseClause); } 
 		while (la.kind == 12) {
 			lexer.NextToken();
 			CaseClause(
-#line  3184 "VBNET.ATG" 
+#line  3185 "VBNET.ATG" 
 out caseClause);
 
-#line  3184 "VBNET.ATG" 
+#line  3185 "VBNET.ATG" 
 			if (caseClause != null) { caseClauses.Add(caseClause); } 
 		}
 	}
 
 	void OnErrorStatement(
-#line  3081 "VBNET.ATG" 
+#line  3082 "VBNET.ATG" 
 out OnErrorStatement stmt) {
 
-#line  3083 "VBNET.ATG" 
+#line  3084 "VBNET.ATG" 
 		stmt = null;
 		GotoStatement goToStatement = null;
 		
 		Expect(157);
 		Expect(105);
 		if (
-#line  3089 "VBNET.ATG" 
+#line  3090 "VBNET.ATG" 
 IsNegativeLabelName()) {
 			Expect(119);
 			Expect(18);
 			Expect(5);
 
-#line  3091 "VBNET.ATG" 
+#line  3092 "VBNET.ATG" 
 			long intLabel = Int64.Parse(t.val);
 			if(intLabel != 1) {
 				Error("invalid label in on error statement.");
@@ -6802,10 +6805,10 @@ IsNegativeLabelName()) {
 			
 		} else if (la.kind == 119) {
 			GotoStatement(
-#line  3097 "VBNET.ATG" 
+#line  3098 "VBNET.ATG" 
 out goToStatement);
 
-#line  3099 "VBNET.ATG" 
+#line  3100 "VBNET.ATG" 
 			string val = goToStatement.Label;
 						// if value is numeric, make sure that is 0
 			try {
@@ -6821,88 +6824,88 @@ out goToStatement);
 			lexer.NextToken();
 			Expect(149);
 
-#line  3113 "VBNET.ATG" 
+#line  3114 "VBNET.ATG" 
 			stmt = new OnErrorStatement(new ResumeStatement(true));
 			
 		} else SynErr(283);
 	}
 
 	void GotoStatement(
-#line  3119 "VBNET.ATG" 
+#line  3120 "VBNET.ATG" 
 out GotoStatement goToStatement) {
 
-#line  3121 "VBNET.ATG" 
+#line  3122 "VBNET.ATG" 
 		string label = String.Empty;
 		
 		Expect(119);
 		LabelName(
-#line  3124 "VBNET.ATG" 
+#line  3125 "VBNET.ATG" 
 out label);
 
-#line  3126 "VBNET.ATG" 
+#line  3127 "VBNET.ATG" 
 		goToStatement = new GotoStatement(label);
 		
 	}
 
 	void ResumeStatement(
-#line  3167 "VBNET.ATG" 
+#line  3168 "VBNET.ATG" 
 out ResumeStatement resumeStatement) {
 
-#line  3169 "VBNET.ATG" 
+#line  3170 "VBNET.ATG" 
 		resumeStatement = null;
 		string label = String.Empty;
 		
 		if (
-#line  3172 "VBNET.ATG" 
+#line  3173 "VBNET.ATG" 
 IsResumeNext()) {
 			Expect(179);
 			Expect(149);
 
-#line  3173 "VBNET.ATG" 
+#line  3174 "VBNET.ATG" 
 			resumeStatement = new ResumeStatement(true); 
 		} else if (la.kind == 179) {
 			lexer.NextToken();
 			if (StartOf(42)) {
 				LabelName(
-#line  3174 "VBNET.ATG" 
+#line  3175 "VBNET.ATG" 
 out label);
 			}
 
-#line  3174 "VBNET.ATG" 
+#line  3175 "VBNET.ATG" 
 			resumeStatement = new ResumeStatement(label); 
 		} else SynErr(284);
 	}
 
 	void ReDimClauseInternal(
-#line  3146 "VBNET.ATG" 
+#line  3147 "VBNET.ATG" 
 ref Expression expr) {
 
-#line  3147 "VBNET.ATG" 
+#line  3148 "VBNET.ATG" 
 		List<Expression> arguments; bool canBeNormal; bool canBeRedim; string name; 
 		while (la.kind == 16 || 
-#line  3150 "VBNET.ATG" 
+#line  3151 "VBNET.ATG" 
 la.kind == Tokens.OpenParenthesis && Peek(1).kind == Tokens.Of) {
 			if (la.kind == 16) {
 				lexer.NextToken();
 				IdentifierOrKeyword(
-#line  3149 "VBNET.ATG" 
+#line  3150 "VBNET.ATG" 
 out name);
 
-#line  3149 "VBNET.ATG" 
+#line  3150 "VBNET.ATG" 
 				expr = new MemberReferenceExpression(expr, name); 
 			} else {
 				InvocationExpression(
-#line  3151 "VBNET.ATG" 
+#line  3152 "VBNET.ATG" 
 ref expr);
 			}
 		}
 		Expect(25);
 		NormalOrReDimArgumentList(
-#line  3154 "VBNET.ATG" 
+#line  3155 "VBNET.ATG" 
 out arguments, out canBeNormal, out canBeRedim);
 		Expect(26);
 
-#line  3156 "VBNET.ATG" 
+#line  3157 "VBNET.ATG" 
 		expr = new InvocationExpression(expr, arguments);
 		if (canBeRedim == false || canBeNormal && (la.kind == Tokens.Dot || la.kind == Tokens.OpenParenthesis)) {
 			if (this.Errors.Count == 0) {
@@ -6914,10 +6917,10 @@ out arguments, out canBeNormal, out canBeRedim);
 	}
 
 	void CaseClause(
-#line  3188 "VBNET.ATG" 
+#line  3189 "VBNET.ATG" 
 out CaseLabel caseClause) {
 
-#line  3190 "VBNET.ATG" 
+#line  3191 "VBNET.ATG" 
 		Expression expr = null;
 		Expression sexpr = null;
 		BinaryOperatorType op = BinaryOperatorType.None;
@@ -6926,7 +6929,7 @@ out CaseLabel caseClause) {
 		if (la.kind == 98) {
 			lexer.NextToken();
 
-#line  3196 "VBNET.ATG" 
+#line  3197 "VBNET.ATG" 
 			caseClause = new CaseLabel(); 
 		} else if (StartOf(43)) {
 			if (la.kind == 131) {
@@ -6936,76 +6939,76 @@ out CaseLabel caseClause) {
 			case 28: {
 				lexer.NextToken();
 
-#line  3200 "VBNET.ATG" 
+#line  3201 "VBNET.ATG" 
 				op = BinaryOperatorType.LessThan; 
 				break;
 			}
 			case 27: {
 				lexer.NextToken();
 
-#line  3201 "VBNET.ATG" 
+#line  3202 "VBNET.ATG" 
 				op = BinaryOperatorType.GreaterThan; 
 				break;
 			}
 			case 31: {
 				lexer.NextToken();
 
-#line  3202 "VBNET.ATG" 
+#line  3203 "VBNET.ATG" 
 				op = BinaryOperatorType.LessThanOrEqual; 
 				break;
 			}
 			case 30: {
 				lexer.NextToken();
 
-#line  3203 "VBNET.ATG" 
+#line  3204 "VBNET.ATG" 
 				op = BinaryOperatorType.GreaterThanOrEqual; 
 				break;
 			}
 			case 10: {
 				lexer.NextToken();
 
-#line  3204 "VBNET.ATG" 
+#line  3205 "VBNET.ATG" 
 				op = BinaryOperatorType.Equality; 
 				break;
 			}
 			case 29: {
 				lexer.NextToken();
 
-#line  3205 "VBNET.ATG" 
+#line  3206 "VBNET.ATG" 
 				op = BinaryOperatorType.InEquality; 
 				break;
 			}
 			default: SynErr(285); break;
 			}
 			Expr(
-#line  3207 "VBNET.ATG" 
+#line  3208 "VBNET.ATG" 
 out expr);
 
-#line  3209 "VBNET.ATG" 
+#line  3210 "VBNET.ATG" 
 			caseClause = new CaseLabel(op, expr);
 			
 		} else if (StartOf(29)) {
 			Expr(
-#line  3211 "VBNET.ATG" 
+#line  3212 "VBNET.ATG" 
 out expr);
 			if (la.kind == 201) {
 				lexer.NextToken();
 				Expr(
-#line  3211 "VBNET.ATG" 
+#line  3212 "VBNET.ATG" 
 out sexpr);
 			}
 
-#line  3213 "VBNET.ATG" 
+#line  3214 "VBNET.ATG" 
 			caseClause = new CaseLabel(expr, sexpr);
 			
 		} else SynErr(286);
 	}
 
 	void CatchClauses(
-#line  3260 "VBNET.ATG" 
+#line  3261 "VBNET.ATG" 
 out List<CatchClause> catchClauses) {
 
-#line  3262 "VBNET.ATG" 
+#line  3263 "VBNET.ATG" 
 		catchClauses = new List<CatchClause>();
 		TypeReference type = null;
 		Statement blockStmt = null;
@@ -7017,27 +7020,27 @@ out List<CatchClause> catchClauses) {
 			if (StartOf(14)) {
 				Identifier();
 
-#line  3270 "VBNET.ATG" 
+#line  3271 "VBNET.ATG" 
 				name = t.val; 
 				if (la.kind == 50) {
 					lexer.NextToken();
 					TypeName(
-#line  3270 "VBNET.ATG" 
+#line  3271 "VBNET.ATG" 
 out type);
 				}
 			}
 			if (la.kind == 214) {
 				lexer.NextToken();
 				Expr(
-#line  3271 "VBNET.ATG" 
+#line  3272 "VBNET.ATG" 
 out expr);
 			}
 			EndOfStmt();
 			Block(
-#line  3273 "VBNET.ATG" 
+#line  3274 "VBNET.ATG" 
 out blockStmt);
 
-#line  3274 "VBNET.ATG" 
+#line  3275 "VBNET.ATG" 
 			catchClauses.Add(new CatchClause(type, name, blockStmt, expr)); 
 		}
 	}
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
index 3fa97a794e..27833a39ff 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
+++ b/src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
@@ -903,6 +903,7 @@ StructureMemberDecl<ModifierList m, List<AttributeSection> attributes>
 			HandlesClause<out handlesClause>
 		)
 	]
+	(. Location endLocation = t.EndLocation; .)
 	(
 		/* abstract methods without a body */
 		IF(IsMustOverride(m))
@@ -912,7 +913,7 @@ StructureMemberDecl<ModifierList m, List<AttributeSection> attributes>
 					Name = name, Modifier = m.Modifier, TypeReference = type,
 					Parameters = p, Attributes = attributes,
 					StartLocation = m.GetDeclarationLocation(startPos),
-					EndLocation   = t.EndLocation,
+					EndLocation   = endLocation,
 					HandlesClause = handlesClause,
 					Templates     = templates,
 					InterfaceImplementations = implementsClause
@@ -930,7 +931,7 @@ StructureMemberDecl<ModifierList m, List<AttributeSection> attributes>
 					Name = name, Modifier = m.Modifier, TypeReference = type,
 					Parameters = p, Attributes = attributes,
 					StartLocation = m.GetDeclarationLocation(startPos),
-					EndLocation   = t.EndLocation,
+					EndLocation   = endLocation,
 					Templates     = templates,
 					HandlesClause = handlesClause,
 					InterfaceImplementations = implementsClause
diff --git a/src/Libraries/NRefactory/Test/Parser/TypeLevel/MethodDeclarationTests.cs b/src/Libraries/NRefactory/Test/Parser/TypeLevel/MethodDeclarationTests.cs
index 44f7ebedce..34d17aec9d 100644
--- a/src/Libraries/NRefactory/Test/Parser/TypeLevel/MethodDeclarationTests.cs
+++ b/src/Libraries/NRefactory/Test/Parser/TypeLevel/MethodDeclarationTests.cs
@@ -331,7 +331,6 @@ namespace ICSharpCode.NRefactory.Tests.Ast
 		}
 		
 		[Test]
-		[Ignore("End line for function is off by one.")]
 		public void VBNetFunctionMethodDeclarationTest()
 		{
 			const string program = @"public function MyFunction() as Integer
diff --git a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs
index 5a3acd4027..a07cf59bb1 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs
@@ -15,6 +15,8 @@ namespace ICSharpCode.SharpDevelop.Gui
 {
 	public class ErrorListPad : AbstractPadContent, IClipboardHandler
 	{
+		public const string DefaultContextMenuAddInTreeEntry = "/SharpDevelop/Pads/ErrorList/TaskContextMenu";
+		
 		static ErrorListPad instance;
 		public static ErrorListPad Instance {
 			get {
@@ -24,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		
 		ToolStrip toolStrip;
 		Panel contentPanel = new Panel();
-		TaskView taskView = new TaskView();
+		TaskView taskView = new TaskView() { DefaultContextMenuAddInTreeEntry = ErrorListPad.DefaultContextMenuAddInTreeEntry };
 		
 		Properties properties;
 		
diff --git a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
index 7ca2998fce..e32baa5a9f 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
@@ -20,6 +20,8 @@ namespace ICSharpCode.SharpDevelop.Gui
 {
 	public class TaskListPad : AbstractPadContent, IClipboardHandler
 	{
+		public const string DefaultContextMenuAddInTreeEntry = "/SharpDevelop/Pads/TaskList/TaskContextMenu";
+		
 		static TaskListPad instance;
 		Dictionary<string, bool> displayedTokens;
 		IClass oldClass;
@@ -33,7 +35,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		ToolStrip toolStrip;
 		Panel contentPanel = new Panel();
 		
-		TaskView taskView = new TaskView();
+		TaskView taskView = new TaskView() { DefaultContextMenuAddInTreeEntry = TaskListPad.DefaultContextMenuAddInTreeEntry };
 		
 		public Dictionary<string, bool> DisplayedTokens {
 			get { return displayedTokens; }
diff --git a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskView.cs b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskView.cs
index c384250619..559310a409 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskView.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskView.cs
@@ -41,6 +41,8 @@ namespace ICSharpCode.SharpDevelop.Gui
 		ColumnHeader path        = new ColumnHeader();
 		ToolTip taskToolTip = new ToolTip();
 
+		public string DefaultContextMenuAddInTreeEntry { get; set; }
+
 		public Task SelectedTask {
 			get {
 				if (this.FocusedItem==null) {
@@ -243,11 +245,14 @@ namespace ICSharpCode.SharpDevelop.Gui
 					for (int i = 1; i < this.SelectedItems.Count; i++) {
 						string entry2 = ((Task)this.SelectedItems[i].Tag).ContextMenuAddInTreeEntry;
 						if (entry2 != entry) {
-							entry = Task.DefaultContextMenuAddInTreeEntry;
+							entry = null;
 							break;
 						}
 					}
-					MenuService.ShowContextMenu(this, entry, this, pos.X, pos.Y);
+					if (entry == null)
+						entry = DefaultContextMenuAddInTreeEntry;
+					if (entry != null)
+						MenuService.ShowContextMenu(this, entry, this, pos.X, pos.Y);
 				}
 			}
 			base.WndProc(ref m);
diff --git a/src/Main/Base/Project/Src/Services/Tasks/Task.cs b/src/Main/Base/Project/Src/Services/Tasks/Task.cs
index b4ecdf0680..01534cf769 100644
--- a/src/Main/Base/Project/Src/Services/Tasks/Task.cs
+++ b/src/Main/Base/Project/Src/Services/Tasks/Task.cs
@@ -22,13 +22,14 @@ namespace ICSharpCode.SharpDevelop
 	
 	public class Task
 	{
-		public const string DefaultContextMenuAddInTreeEntry = "/SharpDevelop/Pads/ErrorList/TaskContextMenu";
+		[Obsolete("Default path now depends on parent pad, use ErrorListPad.DefaultContextMenuAddInTreeEntry instead.")]
+		public const string DefaultContextMenuAddInTreeEntry = Gui.ErrorListPad.DefaultContextMenuAddInTreeEntry;
 		
 		string   description;
 		TaskType type;
 		PermanentAnchor position;
 		bool hasLocation;
-		string contextMenuAddInTreeEntry = DefaultContextMenuAddInTreeEntry;
+		string contextMenuAddInTreeEntry;
 		object tag;
 
 		public override string ToString()
diff --git a/src/Tools/NUnit/buildnunitconsole.bat b/src/Tools/NUnit/buildnunitconsole.bat
index 9d681b457a..cd6b5b2e51 100644
--- a/src/Tools/NUnit/buildnunitconsole.bat
+++ b/src/Tools/NUnit/buildnunitconsole.bat
@@ -1,6 +1,6 @@
 %windir%\microsoft.net\framework\v3.5\msbuild /property:Configuration=Release nunit-console\nunit-console.sln 
 copy nunit-console.exe nunit-console-x86.exe
-"%programfiles%\Microsoft.net\sdk\v2.0\bin\corflags" /32bit+ nunit-console-x86.exe
+corflags /32bit+ nunit-console-x86.exe
 @IF %ERRORLEVEL% NEQ 0 GOTO err
 copy nunit-console.exe nunit-console-dotnet2.exe
 copy nunit-console-x86.exe nunit-console-dotnet2-x86.exe
diff --git a/src/Tools/NUnit/lib/nunit-console-runner.dll b/src/Tools/NUnit/lib/nunit-console-runner.dll
index 2db2f88f8c..1f4e71cab4 100644
Binary files a/src/Tools/NUnit/lib/nunit-console-runner.dll and b/src/Tools/NUnit/lib/nunit-console-runner.dll differ
diff --git a/src/Tools/NUnit/lib/nunit-gui-runner.dll b/src/Tools/NUnit/lib/nunit-gui-runner.dll
index 863d419c8f..6b33bdf331 100644
Binary files a/src/Tools/NUnit/lib/nunit-gui-runner.dll and b/src/Tools/NUnit/lib/nunit-gui-runner.dll differ
diff --git a/src/Tools/NUnit/lib/nunit.core.dll b/src/Tools/NUnit/lib/nunit.core.dll
index aba9e5843e..eda6e76f45 100644
Binary files a/src/Tools/NUnit/lib/nunit.core.dll and b/src/Tools/NUnit/lib/nunit.core.dll differ
diff --git a/src/Tools/NUnit/lib/nunit.core.interfaces.dll b/src/Tools/NUnit/lib/nunit.core.interfaces.dll
index 42c3e6edad..108a707fbb 100644
Binary files a/src/Tools/NUnit/lib/nunit.core.interfaces.dll and b/src/Tools/NUnit/lib/nunit.core.interfaces.dll differ
diff --git a/src/Tools/NUnit/lib/nunit.fixtures.dll b/src/Tools/NUnit/lib/nunit.fixtures.dll
index cc5a290fba..b26824630f 100644
Binary files a/src/Tools/NUnit/lib/nunit.fixtures.dll and b/src/Tools/NUnit/lib/nunit.fixtures.dll differ
diff --git a/src/Tools/NUnit/lib/nunit.uiexception.dll b/src/Tools/NUnit/lib/nunit.uiexception.dll
index bad87a3776..15ce56feb6 100644
Binary files a/src/Tools/NUnit/lib/nunit.uiexception.dll and b/src/Tools/NUnit/lib/nunit.uiexception.dll differ
diff --git a/src/Tools/NUnit/lib/nunit.uikit.dll b/src/Tools/NUnit/lib/nunit.uikit.dll
index c4ef5f4192..c7deca5887 100644
Binary files a/src/Tools/NUnit/lib/nunit.uikit.dll and b/src/Tools/NUnit/lib/nunit.uikit.dll differ
diff --git a/src/Tools/NUnit/lib/nunit.util.dll b/src/Tools/NUnit/lib/nunit.util.dll
index 96424ec925..b7f3b6fe79 100644
Binary files a/src/Tools/NUnit/lib/nunit.util.dll and b/src/Tools/NUnit/lib/nunit.util.dll differ
diff --git a/src/Tools/NUnit/nunit-console-dotnet2-x86.exe b/src/Tools/NUnit/nunit-console-dotnet2-x86.exe
index 5ba52dfa4e..ba8da262a6 100755
Binary files a/src/Tools/NUnit/nunit-console-dotnet2-x86.exe and b/src/Tools/NUnit/nunit-console-dotnet2-x86.exe differ
diff --git a/src/Tools/NUnit/nunit-console-dotnet2-x86.exe.config b/src/Tools/NUnit/nunit-console-dotnet2-x86.exe.config
index 539bc32b07..ca7450071a 100644
--- a/src/Tools/NUnit/nunit-console-dotnet2-x86.exe.config
+++ b/src/Tools/NUnit/nunit-console-dotnet2-x86.exe.config
@@ -1,16 +1,5 @@
 <?xml version="1.0"?>
 <configuration>
-	<!--
-     Application settings for NUnit-console.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-	<appSettings>
-	<!--
-	 Specify the location to be used by .NET for the cache
-	-->
-    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" /> 
-	</appSettings>
-
   <!-- Set the level for tracing NUnit itself -->
   <!-- 0=Off 1=Error 2=Warning 3=Info 4=Debug -->
   <system.diagnostics>
diff --git a/src/Tools/NUnit/nunit-console-dotnet2.exe b/src/Tools/NUnit/nunit-console-dotnet2.exe
index ebf6d3c3d7..2b2def39af 100755
Binary files a/src/Tools/NUnit/nunit-console-dotnet2.exe and b/src/Tools/NUnit/nunit-console-dotnet2.exe differ
diff --git a/src/Tools/NUnit/nunit-console-dotnet2.exe.config b/src/Tools/NUnit/nunit-console-dotnet2.exe.config
index 539bc32b07..ca7450071a 100644
--- a/src/Tools/NUnit/nunit-console-dotnet2.exe.config
+++ b/src/Tools/NUnit/nunit-console-dotnet2.exe.config
@@ -1,16 +1,5 @@
 <?xml version="1.0"?>
 <configuration>
-	<!--
-     Application settings for NUnit-console.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-	<appSettings>
-	<!--
-	 Specify the location to be used by .NET for the cache
-	-->
-    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" /> 
-	</appSettings>
-
   <!-- Set the level for tracing NUnit itself -->
   <!-- 0=Off 1=Error 2=Warning 3=Info 4=Debug -->
   <system.diagnostics>
diff --git a/src/Tools/NUnit/nunit-console-x86.exe b/src/Tools/NUnit/nunit-console-x86.exe
index 5ba52dfa4e..ba8da262a6 100644
Binary files a/src/Tools/NUnit/nunit-console-x86.exe and b/src/Tools/NUnit/nunit-console-x86.exe differ
diff --git a/src/Tools/NUnit/nunit-console-x86.exe.config b/src/Tools/NUnit/nunit-console-x86.exe.config
index c19b40b464..ea6adb310c 100644
--- a/src/Tools/NUnit/nunit-console-x86.exe.config
+++ b/src/Tools/NUnit/nunit-console-x86.exe.config
@@ -3,18 +3,6 @@
 	<startup>
 		<requiredRuntime version="v4.0" />
 	</startup>
-	
-	<!--
-     Application settings for NUnit-console.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-	<appSettings>
-	<!--
-	 Specify the location to be used by .NET for the cache
-	-->
-    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" /> 
-	</appSettings>
-
   <!-- Set the level for tracing NUnit itself -->
   <!-- 0=Off 1=Error 2=Warning 3=Info 4=Debug -->
   <system.diagnostics>
diff --git a/src/Tools/NUnit/nunit-console.exe b/src/Tools/NUnit/nunit-console.exe
index ebf6d3c3d7..2b2def39af 100644
Binary files a/src/Tools/NUnit/nunit-console.exe and b/src/Tools/NUnit/nunit-console.exe differ
diff --git a/src/Tools/NUnit/nunit-console.exe.config b/src/Tools/NUnit/nunit-console.exe.config
index c19b40b464..d881321277 100644
--- a/src/Tools/NUnit/nunit-console.exe.config
+++ b/src/Tools/NUnit/nunit-console.exe.config
@@ -3,17 +3,6 @@
 	<startup>
 		<requiredRuntime version="v4.0" />
 	</startup>
-	
-	<!--
-     Application settings for NUnit-console.exe. Do NOT put settings
-	 for use by your tests here.
-	-->
-	<appSettings>
-	<!--
-	 Specify the location to be used by .NET for the cache
-	-->
-    <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" /> 
-	</appSettings>
 
   <!-- Set the level for tracing NUnit itself -->
   <!-- 0=Off 1=Error 2=Warning 3=Info 4=Debug -->
diff --git a/src/Tools/NUnit/nunit-console/AssemblyInfo.cs b/src/Tools/NUnit/nunit-console/AssemblyInfo.cs
index 44f0285165..1f2afdb7d0 100644
--- a/src/Tools/NUnit/nunit-console/AssemblyInfo.cs
+++ b/src/Tools/NUnit/nunit-console/AssemblyInfo.cs
@@ -1,8 +1,8 @@
 // ****************************************************************
 // This is free software licensed under the NUnit license. You
 // may obtain a copy of the license as well as information regarding
-// copyright ownership at http://nunit.org/?p=license&r=2.4.
-// 
+// copyright ownership at http://nunit.org.
+// ****************************************************************
 
 using System.Reflection;
 
@@ -36,5 +36,5 @@ using System.Reflection;
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
 
-[assembly: AssemblyVersion("2.5.3")]
-[assembly: AssemblyInformationalVersion("2.5.3")]
+[assembly: AssemblyVersion("2.5.4")]
+[assembly: AssemblyInformationalVersion("2.5.4")]
diff --git a/src/Tools/NUnit/nunit-console/ExtendedConsoleUi.cs b/src/Tools/NUnit/nunit-console/ExtendedConsoleUi.cs
index f6e41485e3..72cdeb4948 100644
--- a/src/Tools/NUnit/nunit-console/ExtendedConsoleUi.cs
+++ b/src/Tools/NUnit/nunit-console/ExtendedConsoleUi.cs
@@ -76,7 +76,7 @@ namespace NUnit.ConsoleRunner
                     ? package.Settings["RuntimeFramework"]
                     : "Default");
 
-            TestRunner testRunner = TestRunnerFactory.MakeTestRunner(package);
+            TestRunner testRunner = new TestRunnerFactory().MakeTestRunner(package);
             testRunner.Load(package);
 
             try
@@ -224,7 +224,8 @@ namespace NUnit.ConsoleRunner
 			}
 			else
 			{
-				package = new TestPackage(null, options.Parameters);
+                // TODO: Figure out a better way to handle "anonymous" packages
+				package = new TestPackage((string)options.Parameters[0], options.Parameters);
 				domainUsage = DomainUsage.Multiple;
 			}
 
diff --git a/src/Tools/NUnit/nunit.framework.dll b/src/Tools/NUnit/nunit.framework.dll
index 88f3fa3b51..080e8de000 100755
Binary files a/src/Tools/NUnit/nunit.framework.dll and b/src/Tools/NUnit/nunit.framework.dll differ